View Code of Problem 94


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.


Back to problem 94