@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?
  • Вопрос задан
  • 6391 просмотр
Пригласить эксперта
Ответы на вопрос 5
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);
Ответ написан
@Kredo403
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {

        Scanner textString = new Scanner(System.in);
        System.out.println("Введите фразу:");
        String userPhrase = textString.nextLine();

        System.out.println("=========================================================\n");
        System.out.println("Ваша фраза:\t" + userPhrase);

        String number = "";
        char symbol = ' ';
        int indicator = 0;
        double sum = 0;


        for (int i = 0; i < userPhrase.length(); i++) {
            symbol = userPhrase.charAt(i); //запишем текущий символ в переменную

            if (Character.isDigit(symbol) == false && indicator > 0) { //если символ является не цифрой, то число уже считано и его можно записать в переменную sum
                System.out.println("Замечено число: " + Integer.parseInt(number));
                sum = sum + Integer.parseInt(number);
                indicator = 0;
                number = "";
            }

            if (Character.isDigit(symbol)) {  //если символ является числом то запишем его в строковую переменную number
                number += symbol;
                indicator++;
            }


        }
        if (indicator > 0) //если фраза заканчивается на число
            sum = sum + Integer.parseInt(number);


        System.out.println("=======================Result=================================\n");
        System.out.println("Сумма всего зароботка: " + sum);


    }
}
Ответ написан
Комментировать
@Sabrina74
У меня получилось так.

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
System.out.println("Введите фразу: ");
String text = scanner.nextLine();

String[] words = text.split(", ");
for(String phrase : words){
System.out.println(phrase);
}

String regex = "[^\\d]+";

int summ = 0;
String[] reg = text.split(regex);

for(String word : reg){
try {
Integer rez = new Integer(word);
summ = summ + rez;
} catch (NumberFormatException e) {
//System.err.println("Неправильный формат строки!");
}
}
System.out.println("Сумма всех зарплат: " + summ);
}
Ответ написан
Комментировать
@hottab1337
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class tt {
private static Object result;

public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String[] s = r.readLine().split(" ");

int A = Integer.parseInt(s[0]);
int B = Integer.parseInt(s[1]);
System.out.println(A+B);
}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽