import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Stack; import javax.lang.model.element.Element; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); Stack<String> stack = new Stack<String>(); for (int i = 0; i < string.length(); i++) { char c = string.charAt(i); if (c == ' ') { continue; } else if (c == ')') { String string2 = stack.pop(); List<Integer> list = new ArrayList<Integer>(); int sum = 0; while (string2!="(") { if ("+".equals(string2)) { sum=list.get(list.size()-1); for (int j = list.size()-2; j >=0; j--) { sum=sum+list.get(j); } stack.pop(); stack.push(sum+""); break; } else if ("-".equals(string2)) { sum=list.get(list.size()-1); for (int j = list.size()-2; j >=0; j--) { sum=sum-list.get(j); } stack.pop(); stack.push(sum+""); break; } else if ("*".equals(string2)) { sum=list.get(list.size()-1); for (int j = list.size()-2; j >=0; j--) { sum=sum*list.get(j); } stack.pop(); stack.push(sum+""); break; } else if ("/".equals(string2)) { sum=list.get(list.size()-1); for (int j = list.size()-2; j >=0; j--) { sum=sum/list.get(j); } stack.pop(); stack.push(sum+""); break; } else { list.add(Integer.parseInt(string2)); } string2 = stack.pop(); } } else if (c >= '0' && c <= '9') { int k = i ; int temp = 0; char p = string.charAt(k); while (p >= '0' && p <= '9') { temp = temp * 10 + Integer.parseInt(p + ""); k++; p = string.charAt(k); } stack.push(temp + ""); i = k-1; } else { stack.push(c + ""); } } if (!stack.empty()) { System.out.println(stack.pop()); } } } |
Double click to view unformatted code.