@julith

Выделить числа из строки и найти их сумму в java?

есть строка, например, "Вася заработал 5000 рублей, Петя - 7563 рубля, а Маша - 30000". Вывод должен дать сумму всех чисел в строке. Я извлекла числа из строки, но не понимаю как их сложить. Регулярные выражения использовать нельзя
String str = text.trim();
    String digits="";
    for (int i = 0; i < str.length(); i++) {
      char chrs = str.charAt(i);
      if (Character.isDigit(chrs))
        digits = digits+chrs;
    }
    System.out.println(digits);

Выводит 5000756330000. Как вывести 42563?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Раз регулярные выражения использовать нельзя, пиши конечный автомат. Там будет всего пара состояний(читаем число(D), читаем не число(C)) и переходы между ними.
Вначале находится в состоянии С.
Находясь в состоянии С, видим цифру - переходим в состояние D, и пишем цифру в буфер, переходим на следующий символ. Находясь в состоянии С и видя не-цифру, остаёмся в С и переходим на следующий символ.
Находясь в состоянии D и видя цифру - остаёмся в D и дописываем цифру в буфер. Находясь в состоянии D и видя не-цифру, переходим в состояние C, буфер прибавляем к сумме, буфер очищаем.
Буфер может быть сразу числом, тогда добавление в него значит buffer = buffer*10+d, а очищение - присваивание нуля.
Ответ написан
twobomb
@twobomb
String str = text.trim();
String digits="";
            int sum = 0;
            str+=" ";
            for (int i = 0; i < str.length(); i++) {
              char chrs = str.charAt(i);
              if (Character.isDigit(chrs))
                digits+=chrs;
              else{
                  if(!digits.equals(""))
                     sum+= Integer.parseInt(digits);
                  digits = "";
              }
              
            }
            System.out.println(sum);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы