Advertisement
savovaap_

Arithmetic Expression

May 24th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.73 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class ArithmeticExpression {
  5.  
  6.     public static void main(String[] args) {
  7.         String expression = readExpression();
  8.         try {
  9.             int[] numbers = extractNumbers(expression);
  10.             String[] operators = extractOperators(expression);
  11.             int result = calculateExpression(numbers, operators);
  12.             System.out.printf("%s = %d \n", expression, result);
  13.         } catch (Exception ex) {
  14.             System.out.println("Invalid expression!");
  15.         }
  16.     }
  17.  
  18.     private static int[] extractNumbers(String expression) {
  19.         String[] splitResult = expression.split("[+-]");
  20.         int numbersCount = splitResult.length;
  21.         int[] numbers = new int[numbersCount];
  22.         int currentNumber;
  23.         for (int index = 0; index < numbersCount; index++) {
  24.             currentNumber = Integer.parseInt(splitResult[index]);
  25.             numbers[index] = currentNumber;
  26.         }
  27.         return numbers;
  28.     }
  29.  
  30.     private static String[] extractOperators(String expression) {
  31.         String[] operators = expression.split("[0123456789]+");
  32.         int operatorsCount = operators.length;
  33.         if (operatorsCount > 0) {
  34.             operators = Arrays.copyOfRange(operators, 1, operatorsCount);
  35.         }
  36.         return operators;
  37.     }
  38.  
  39.     private static int calculateExpression(int[] numbers, String[] operators) {
  40.         int result = numbers[0];
  41.         for (int i = 1; i < numbers.length; i++) {
  42.             String nextOperator = operators[i - 1];
  43.             int nextNumber = numbers[i];
  44.             if (nextOperator.equals("+")) {
  45.                 result += nextNumber;
  46.             } else if (nextOperator.equals("-")) {
  47.                 result -= nextNumber;
  48.             }
  49.         }
  50.         return result;
  51.     }
  52.  
  53.     private static String readExpression() {
  54.         Scanner input = new Scanner(System.in);
  55.         System.out.print("Enter expression: ");
  56.         String expression = input.nextLine();
  57.         return expression;
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement