Сумма чисел из строки
Нужно из строчки получить сумму чисел указанных в ней используя методы indexOf(), lastIndexOf(), substring() и trim().
Код работает , но как использовать lastIndexOf() я не понял. Как правильно записать i ? ведь сейчас она дважды суммируется?.
В процессе решения, я видел решения с регулярными выражениями , чарами , но до этого я ещё не дошел , т.к. в программировании я всего неделю.
Подскажите, правильно ли я понял задачу , как это все облегчить ?
String text = "Вася заработал 5000 рублей, Петя - 7563 рубля, а Маша - 30000 рублей , а вася получил 50000 .dasgsa ga fsda f500иа ";
int valueNumber = 0;
String cleanNumber = (text.replaceAll("[^ 0-9]", "").replaceAll("\\s+" , " ").trim()) + " " ; // Очищаю строку от цифр и пустый пробелов. Плюс пробел для поиска последнего
for (int i = 0; i < (cleanNumber.length()); i++) {
int firstNumber = cleanNumber.indexOf(' ', i) ; //Индекс пробела
int number = Integer.parseInt(cleanNumber.substring(i , firstNumber)); // привожу к инту и обрезаю число , плюс смещаю i для начала числа
i = i + cleanNumber.substring(i , firstNumber).length(); // Как сделать проще отступ от числа ?
valueNumber += number; //сумма чисел
System.out.println(i);
}
System.out.println(valueNumber);
Ответы (1 шт):
i = i + cleanNumber.substring(i , firstNumber).length(); // Как сделать проще отступ от числа ?
Для упрощения можно присваивать значение firstNumber переменной цикла, не вычисляя длину подстроки.
Однако, может понадобиться обработать случай, когда входная строка не содержит ни одной цифры, проверяя значения firstNumber и непустоту промежуточной строки:
for (int i = 0, n = cleanNumber.length(); i < n; i++) {
int firstNumber = cleanNumber.indexOf(' ', i) ; //Индекс пробела
String num = cleanNumber.substring(i, firstNumber);
if (firstNumber > -1 && !num.isEmpty()) {
int number = Integer.parseInt(num); // привожу к инту и обрезаю число , плюс смещаю i для начала числа
System.out.println(number);
i = firstNumber; // !!!
valueNumber += number; //сумма чисел
}
System.out.println(i);
}