java吧 关注:1,309,348贴子:12,888,925
  • 4回复贴,共1

请问这代码哪里有问题

只看楼主收藏回复

String xx = "20 - 1 * 2 - 3 - 4 + 2 - 5";
String[] x = xx.split(" ");
ArrayList<String> a = new ArrayList();
for (int i = 0; i < x.length; i++) {
a.add(x[i]);
}
while (a.size() != 1) {
int k = 0;
int b = 0;
if (a.get(b).equals("*")) {
k = Integer.parseInt(a.get(b-1)) * Integer.parseInt(a.get(b+1));
a.remove(b-1);
a.remove(b);
a.remove(b+1);
a.add(b, String.valueOf(k));
}
}
while (a.size() != 1) {
int k = 0;
if (a.get(1).equals("+")) {
k = Integer.parseInt(a.get(0)) + Integer.parseInt(a.get(2));
a.remove(0);
a.remove(0);
a.remove(0);
a.add(0, String.valueOf(k));
}
else if (a.get(1).equals("-")) {
k = Integer.parseInt(a.get(0)) - Integer.parseInt(a.get(2));
a.remove(0);
a.remove(0);
a.remove(0);
a.add(0, String.valueOf(k));
}
}
System.out.println(a.get(0));


1楼2016-04-15 16:56回复
    截图,不要码


    来自Android客户端2楼2016-04-15 17:15
    收起回复
      2026-09-18 05:34:25
      广告
      不感兴趣
      开通SVIP免广告
      b的值没更改,if进不去,死循环
      while (a.size() != 1) {
      int k = 0;
      int b = 0;
      if (a.get(b).equals("*")) {
      k = Integer.parseInt(a.get(b - 1))
      * Integer.parseInt(a.get(b + 1));
      a.remove(b - 1);
      a.remove(b);
      a.remove(b + 1);
      a.add(b, String.valueOf(k));
      }
      }


      IP属地:贵州3楼2016-04-15 17:23
      收起回复