import java.math.BigDecimal; import java.util.ArrayList; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class _3_SimpleExpression { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); String inputLine = scan.nextLine().trim(); Pattern numberPatt = Pattern.compile("\\d{1,10}([.]*([0-9]{0,9}))*"); Matcher matcher = numberPatt.matcher(inputLine); ArrayList numbers = new ArrayList<>(); String numStr; while (matcher.find()) { numStr = matcher.group(); numbers.add(new BigDecimal(numStr)); } Pattern operatorPatt = Pattern.compile("\\+|\\-"); matcher = operatorPatt.matcher(inputLine); ArrayList operators = new ArrayList<>(); while (matcher.find()) { operators.add(matcher.group()); } BigDecimal sumOfNumbers = numbers.get(0); for (int i = 1; i < numbers.size(); i++) { if (operators.get(i - 1).equals("+")) { sumOfNumbers = sumOfNumbers.add(numbers.get(i)); } else if (operators.get(i - 1).equals("-")) { sumOfNumbers = sumOfNumbers.subtract(numbers.get(i)); } else { throw new IllegalArgumentException("Invalid operator: " + operators.get(i - 1)); } } System.out.println(sumOfNumbers.toPlainString()); } }