forked from kishanrajput23/Java-Projects-Collections
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCalculator.java
50 lines (43 loc) · 1.52 KB
/
Calculator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Queue;
public class Calculator {
public static void main(String[] args){
final String inputExp = ReadInput.read();
Queue<String> operations;
Queue<String> numbers;
String[] numbersArr = inputExp.split("[-+*/%]");
// String[] operArr = inputExp.split("[0-9]+");
String[] operArr = inputExp.split("\\d+");
numbers = new LinkedList<>(Arrays.asList(numbersArr));
operations = new LinkedList<>(Arrays.asList(operArr));
Double res = Double.parseDouble(Objects.requireNonNull(numbers.poll()));
while(!numbers.isEmpty()){
String opr = operations.poll();
Operate operate;
switch(Objects.requireNonNull(opr)){
case "+":
operate = new Add();
break;
case "-":
operate = new Sub();
break;
case "*":
operate = new Multiply();
break;
case "/":
operate = new Divide();
break;
case "%":
operate = new Modulus();
break;
default:
continue;
}
Double num = Double.parseDouble(Objects.requireNonNull(numbers.poll()));
res = operate.getResult(res, num);
}
System.out.println(res);
}
}