Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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<BigDecimal> 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<String> 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());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement