Сумма чисел из строки

Нужно из строчки получить сумму чисел указанных в ней используя методы 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 шт):

Автор решения: Nowhere Man

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);
}
→ Ссылка