BASIC CALCULATOR STACK
unknown
java
2 years ago
1.4 kB
7
Indexable
//Q4 BASIC CALCULATOR STACK
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static int calculate(String s){
Stack<Integer> stack = new Stack<>();
int num = 0;
char sign = '+';
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if (Character.isDigit(c)){
num = num * 10 + (c - '0');
}
if (c == '('){
int j = i + 1;
int count = 1;
while (count != 0){
if (s.charAt(j) == '(') count++;
else if (s.charAt(j) == ')') count--;
j++;
}
num = calculate(s.substring(i + 1, j - 1));
i = j - 1;
}
if ((!Character.isDigit(c) && c !=' ') || i == s.length() - 1) {
if (sign == '+'){
stack.push(num);
} else if (sign == '-'){
stack.push(-num);
} else if (sign == '*'){
stack.push(stack.pop() * num);
} else if (sign == '/'){
stack.push(stack.pop() / num);
}
sign = c;
num = 0;
}
}
int result = 0;
while (!stack.isEmpty()){
result += stack.pop();
}
return result;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int result = calculate(str);
System.out.println(result);
}
}Editor is loading...
Leave a Comment