序号:#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);
}