java.怎么实现字串符的先乘除后加减阿

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:50:28
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str ="1+2*6/3";
String[] nums =str.split("[-+*/]{1,}");
String[] opts = str.split("[^-+*/]{1,}");
double[] dbls = strToDouble(nums);
double ans = calculate(dbls,opts);
System.out.println("Ans is "+ ans);
}

static double calculate(double[] dbls, String[] opts){
double ans = dbls[0];
for( int i=1; i < dbls.length;i++ ){
String opt = (dbls.length==opts.length ?opts[i] : opts[i-1]);
if ( opt.equals("*")) ans *= dbls[i];
else if ( opt.equals("/")) ans /= dbls[i];
else if ( opt.equals("+")) ans += dbls[i];
else if ( opt.equals("-")) ans -= dbls[i];
}
return ans;
}

static double[] strToDouble(String[] strs){
double[] result = new double[strs.l

堆栈\逆波兰
用堆栈实现,速度快;逆波兰,可以减少输入输出的烦琐处理。
详细代码……,不好意思,我也在做。不过你可以找到逆波兰的资料看看

加些()这东西试试看

自己写个类