Приложение, извлекающее из строки заработные платы людей и суммирующее их

Помогите разобраться пожалуйста. Дано задание: Создайте переменную “text” со следующим текстом: String text = "Вася заработал 5000 рублей, Петя - 7563 рубля, а Маша - 30000 рублей"; Напишите код, который получит и просуммирует все числа, содержащиеся в этой строке, используя цикл, а также методы строки “indexOf” и “substring”. В результате программа должна вывести сумму всех найденных чисел.

Есть решение:

public class Main {
public static void main(String[] args) {
String text = "Вася заработал 5000 рублей, Петя - 7563 рубля, а Маша - 30000 рублей";
int numberStart = -1;
int index = 0;
int sum = 0;
while(index >= 0) {
   index = text.indexOf(' ', index + 1);
   if (Character.isDigit(text.charAt(index + 1))) {
       numberStart = index + 1;
   }
   if (numberStart > 0 &&
       Character.isDigit(text.charAt(index - 1))) {
       sum += Integer.parseInt(
           text.substring(numberStart, index)
       );
       numberStart = -1;
   }
}
System.out.println(sum);
}
}

Прошу пояснить построчно как он работает. Заранее спасибо!


Ответы (1 шт):

Автор решения: Alexey Zhigimont
index = text.indexOf(' ', index + 1);

данный кусок кода ищет пробел в строке, т.е. условно отделает слова.

if (Character.isDigit(text.charAt(index + 1)))

далее идет if который проверяет, а не содержит ли первый символ нового слова цифру, и если содержит то счетчик

numberStart = index + 1;

считает сколько этих символов в этой "цифре"

if (numberStart > 0 && Character.isDigit(text.charAt(index - 1)))

далее идет if который преобразует символы в цифры(int) и суммирует в конечный результат Но есть одно но! если будет стоять в строке первым словом ЗП(т.е. цифры) он их пропустит и не посчитает.

→ Ссылка