条件限定:
1、 输入的四则运算式由'+','-','*','/'运算符及正整数组成;
2、 无需考虑特殊字符、表达式语法错误及除不尽的情况;
3、 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;
4、 计算的中间数据及最终结果都不会超过65535;
5、 当遇到除数为0时,即刻返回当前已计算结果。
1、 输入的四则运算式由'+','-','*','/'运算符及正整数组成;
2、 无需考虑特殊字符、表达式语法错误及除不尽的情况;
3、 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;
4、 计算的中间数据及最终结果都不会超过65535;
5、 当遇到除数为0时,即刻返回当前已计算结果。
例:输入:2+1*4-2/5 输出:2
import java.util.Scanner;
public class FourOperation {
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span> Scanner in=new Scanner(System.in);
<span style="white-space:pre"> </span> System.out.println("请输入字符串:");
<span style="white-space:pre"> </span> String s=in.nextLine();
<span style="white-space:pre"> </span> String regex="\\p{Punct}";
<span style="white-space:pre"> </span> String[] digitWord=s.split(regex) ;
<span style="white-space:pre"> </span> int[] digit=new int[digitWord.length];
<span style="white-space:pre"> </span> for(int i=0;i<digitWord.length;i++){
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>try{
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>digit[i]=Integer.parseInt(digitWord[i]);
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>catch(NumberFormatException e){
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>System.out.println("除了标点符号外还有非数字字符");
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>System.exit(0);
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span> }
<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>
char[]c=s.toCharArray();
<span style="white-space:pre"> </span> int result=digit[0];
<span style="white-space:pre"> </span> // System.out.println(c);
int j=1;//与下一个数字做运算
<span style="white-space:pre"> </span> for (int i=0; i<c.length; i++)//遍历每个算术符号
<span style="white-space:pre"> </span> {
<span style="white-space:pre"> </span> switch (c[i])
<span style="white-space:pre"> </span> {
<span style="white-space:pre"> </span>case'+': result+=digit[j]; j++;break;
<span style="white-space:pre"> </span>case'-': result-=digit[j]; j++;break;
<span style="white-space:pre"> </span>case'*': result=result*digit[j]; j++;break;
<span style="white-space:pre"> </span>case'/':
<span style="white-space:pre"> </span>if(digit[j]=='0')
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>System.out.println("结果为: "+ result);
<span style="white-space:pre"> </span>System.exit(0);
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>result=result/digit[j]; j++;break;
<span style="white-space:pre"> </span>default: break;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span> System.out.println("结果为: "+ result);
<span style="white-space:pre"> </span>}
}
有错误或者改进意见请留言。