/
eelamimi
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
eelamimi
/
SberJavaCourseBeginner
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
hw4/src/main/java/courseSber/Task2/Task2.java
42 строки
2 KB
glebka
task 4.2 complete
27 мар 2025, 15:32
27 мар 2025, 15:32
e4bc30e
Код
Авторство
О чём код?
package courseSber.Task2; public class Task2 { public static String sumNumbersInText(String str) { String s = str.replaceAll(",", "."), tmpNum = "", resOut = ""; double sumOfNums = 0; for (int i = 0; i < s.length() - 1; i++) { boolean digitNext = Character.isDigit(s.charAt(i + 1)); if (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.' && digitNext)) { tmpNum += s.charAt(i); // на случай если число в конце строки, пример: // input: 50,5 + 46 = 96,5 // output: 50.5 + 46 + 96.5 = 193.0) if (digitNext && i == s.length() - 2) { tmpNum += s.charAt(i + 1); } } else if (!tmpNum.isEmpty()) { resOut += " + " + tmpNum; // у меня работает parseDouble только с точкой sumOfNums += Double.parseDouble(tmpNum); tmpNum = ""; } } boolean intAtEnd = true; // если число double в конце строки if (!tmpNum.isEmpty()) { resOut += " + " + tmpNum; sumOfNums += Double.parseDouble(tmpNum); intAtEnd = false; } // если число int в конце строки char cLast = s.charAt(s.length() - 1); if (Character.isDigit(cLast) && intAtEnd) { resOut += " + " + cLast; sumOfNums += Double.parseDouble(String.valueOf(cLast)); } if (sumOfNums == 0) { return ""; } return resOut.substring(3) + " = " + sumOfNums; } }