Приложение, извлекающее из строки заработные платы людей и суммирующее их
Помогите разобраться пожалуйста. Дано задание: Создайте переменную “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 шт):
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) и суммирует в конечный результат Но есть одно но! если будет стоять в строке первым словом ЗП(т.е. цифры) он их пропустит и не посчитает.