计算器较长表达式整体运算

来源:互联网 发布:3d分析软件 编辑:程序博客网 时间:2024/05/29 01:51
String t1="5+9*8/10-66";String str1=t1;        String[] str2=t1.split("\\+|-|\\*|/");//得到字符串分割后的所有数字        int count=0;        char[] f=new char[str2.length-1] ;        char[] ch=str1.toCharArray();               //拆分出字符串中的所有符号并赋值给f[]数组。        for(int i=0;i<ch.length;i++){            for(int j=count;j<ch.length;j++){                if(ch[j]=='+'||ch[j]=='-'||ch[j]=='*'||ch[j]=='/'){                    f[i]=ch[j];                    count=j+1;                    break;                }                count=j+1;            }        }        //得到所有数字和符号后,优先进行乘除运算。        for(int m=0;m<f.length;m++){            switch(f[m]){            case'*':{                str2[m+1]=String.valueOf(Double.parseDouble(str2[m])*Double.parseDouble(str2[m+1]));                str2[m]="0";                f[m]='+';                break;                }            case'/':{                str2[m+1]=String.valueOf(Double.parseDouble(str2[m])/Double.parseDouble(str2[m+1]));                str2[m]="0";                f[m]='+';                break;                }               }        }        //从左到右依次计算返回最终值        for(int k=0;k<f.length;k++){            switch(f[k]){            case '+':str2[k+1]=String.valueOf(Double.parseDouble(str2[k])+Double.parseDouble(str2[k+1]));break;            case '-':str2[k+1]=String.valueOf(Double.parseDouble(str2[k])-Double.parseDouble(str2[k+1]));break;            }        }        String result=str2[str2.length-1];
0 0
原创粉丝点击