java.怎么实现字串符的先乘除后加减阿
关注:91 答案:3 信息版本:手机版 电脑版
解决时间 2021-01-18 00:22
提问者壹玍徴戰何亽陪
2021-01-17 10:00
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.length];
for(int i= 0; i
try {result[i] = Double.parseDouble(strs[i]);}
catch (Exception ex) {}
return result;
}
}
这个是部分代码。怎么改动才能让它变得可以实现先乘除后加减呢。谢谢了
麻烦写出详细代码。急啊。
最佳答案
二级知识专家娇而不傲的猫
2021-01-17 10:38
堆栈\逆波兰
用堆栈实现,速度快;逆波兰,可以减少输入输出的烦琐处理。
详细代码……,不好意思,我也在做。不过你可以找到逆波兰的资料看看
全部回答
1楼此生不换的執著
2021-01-17 13:42
加些()这东西试试看
2楼尝一口甜筒
2021-01-17 12:04
自己写个类
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看