/
alim4ik-had
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
alim4ik-had
/
SberJavaCourseBeginner
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
hw4/src/main/java/org/example/task2/SumNumbers.java
57 строк
2 KB
alimo
findSum_program
02 апр 2025, 20:39
02 апр 2025, 20:39
d30d797
Код
Авторство
О чём код?
package org.example.task2; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SumNumbers { public static String findSum(String text){ String[] arrayElems = text .replaceAll("[^\\d,.-]", " ") .replaceAll(",", ".") .split(" +"); double sum = 0; String sumText = ""; String changeElem = ""; for (String elem : arrayElems) { try { changeElem = elem.replaceFirst("^[.]+", "").replaceFirst("[.]+$", ""); sum += Double.parseDouble(changeElem); sumText += changeElem + " + "; } catch (NumberFormatException e) { //на случай если в тексте есть запись, подобная 2.2.2 или 2-2-2 Pattern patternNum = Pattern.compile("-?\\d+"); Matcher matcher = patternNum.matcher(changeElem); String currentNum; while (matcher.find()){ currentNum = matcher.group(); sum += Double.parseDouble(currentNum); sumText += currentNum + " + "; } } } return getFinishSum(sumText, sum); } private static String getFinishSum(String sumText, double sum){ StringBuilder newSumText = new StringBuilder(sumText); int lastPlusIndex = newSumText.lastIndexOf("+"); int firstPlusIndex = newSumText.indexOf("+"); if(lastPlusIndex == -1){ return "В тексте нет чисел!"; } else if (lastPlusIndex == firstPlusIndex){ newSumText.setCharAt(lastPlusIndex, ' '); //возврат без последних пробелов return newSumText.toString().substring(0, newSumText.length()-3); } newSumText.setCharAt(lastPlusIndex, '='); sumText = newSumText.toString(); sumText += sum; return sumText; } public static void main(String[] args) { System.out.println(findSum("hello6сррунумуи9рсиврмр-3аисрвим3.5оовоа+1овово-9")); } }