序号:#16
难度:有挑战
时间限制:1000ms
内存限制:10M
描述
实现一个算法,可以进行任意非负整数的加减乘除组合四则运算。

请注意运算符的优先级。

输入
请输入一行算式,使用空格分隔数字与运算符。

数字为任意非负整数,运算符为+ - * /,不考虑括号。

输出
输出算式的运算结果。如果是小数,请向下取整(包含中间步骤结果)。 如果出现“除0异常”,输出err。

输入样例

3 + 5
12 + 45 / 9
1 / 2
1 / 0
12 + 34 * 56 - 78

输出样例

8
17
0
err
1838
public static String  solution(String line)
	{
      
		Stack<String> stack = new Stack<String>();
		String line1[] = line.split(" ");
		for(int i = 0;i<line1.length;i++)
		{
   
			if(line1[i].equals("/"))
			{
   
				if(line1[i+1].equals("0"))
					return "err";
				stack.add(String.valueOf(Integer.parseInt(stack.pop())/Integer.parseInt(line1[++i])));
			}
			else if(line1[i].equals("*"))
				stack.add(String.valueOf(Integer.parseInt(stack.pop())*Integer.parseInt(line1[++i])));
			
			else
				stack.add(line1[i]);
		}
		int[] a1 = new int[(stack.size()+1)/2];
		int flag =0;
		int temp=0;
		int sum=0;
		int m =stack.size();
		for(int i = 0;i<m;i++)
		{
   
			if(flag==0)
			{
   a1[temp++] = Integer.parseInt(stack.pop());
			flag =1;}
			else
			{
   
				if(stack.pop().equals("+"))
					{
   sum+=a1[temp-1];
				flag =0;}
				else
					{
   sum-=a1[temp-1];
					flag =0;
					}
					
			}
		}
		sum+=a1[a1.length-1];
			
			
	return String.valueOf(sum);
	}