四则运算表达式求值

实现一个正整数加、减、乘、除四则混合运算求值方法

条件限定:

 

1 输入的四则运算式由'+','-','*','/'运算符及正整数组成;

2 无需考虑特殊字符、表达式语法错误及除不尽的情况;

3 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;

4、 计算的中间数据及最终结果都不会超过65535;

5 当遇到除数为0时,即刻返回当前已计算结果。

输入

输入字符串

输出

输出计算结果

样例输入

2+1*4-2/5

样例输出

2

public static String fourArithmeticOperations(){
		Scanner ss=new Scanner(System.in);
		String input=ss.next();
		char[] c=input.toCharArray();
		int len=c.length;
		String[] strArray=new String[len];
		for(int i=0;i<len;i++){
			strArray[i]=String.valueOf(c[i]);
		}
		int sum=0;
		Stack<String> stackFirst=new Stack<String>();
		for(int i=len-1;i>=0;i--){
			stackFirst.push(strArray[i]);
		}
		while(!stackFirst.isEmpty()){
			String str1=stackFirst.pop(),str2=null,str3=null;
			if(!stackFirst.isEmpty()){
				str2=stackFirst.pop();
			}
			if(!stackFirst.isEmpty()){
				str3=stackFirst.pop();
			}
			switch(str2.charAt(0)){
			case '+':
				sum=Integer.valueOf(str1)+Integer.valueOf(str3);
				if(sum>=65535){return "结果超过65535";}
				break;
			case '-':
				sum=Integer.valueOf(str1)-Integer.valueOf(str3);
				if(sum>=65535){return "结果超过65535";}
				break;
			case '*':
				sum=Integer.valueOf(str1)*Integer.valueOf(str3);
				if(sum>=65535){return "结果超过65535";}
				break;
			case '/':
				if(Integer.valueOf(str3)==0){
					return str1;
				}else{
					sum=Integer.valueOf(str1)/Integer.valueOf(str3);
					if(sum>=65535){return "结果超过65535";}
					break;
				}
			}
			if(!stackFirst.isEmpty()){
				stackFirst.push(String.valueOf(sum));
			}
		}
		return String.valueOf(sum);
	}


 

 

你可能感兴趣的:(软件开发,软件,华为,校园招聘,工程师)