试图解决其算子和数字在两个不同列表中的数学方程式

时间:2014-04-03 17:29:49

标签: java arrays arraylist

我最终要做的是:

1)Go through operators ArrayList and find the * or / (whatever comes first)
2)Go to numbers ArrayList and do the operation * or / at index and index+1
3)Add the evaluated value and remove the numbers at index and index+1
4)Remove operator at index
5)Repeat loop until higher precedence operators are gone.
6)Do the same for operators of lower precedence (+ and -).

2 个答案:

答案 0 :(得分:3)

您遇到逻辑错误:

对于案件:

Operators: [+,-,/,*]
Numbers:[5,2,4,6,3]

如果您对代码执行干运行,则会收到错误。

当您执行在jth位置添加结果的操作,并删除2个数字和运算符时,j不应该在下一次迭代中增加,实际上您正在跳过下一个运算符。因此,您只需要添加j--以及这些操作。

答案 1 :(得分:1)

我还没有尝试调试程序。但是,在将for与索引一起使用时,在从数组中删除元素的同时,必须非常小心。假设您有一个ArrayList,其值为"a", "b", "c", "d", "e",并且您可以编写类似

的内容
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
    list.remove(i);
}

第一次循环时,i为0,元素为"a"。然后列表变为"b", "c", "d", "e"。然后i递增。由于元素已移位,但i递增,因此打印的下一个元素将为"c",并跳过第二个元素。

如果只删除某些元素,则需要确保仅为删除的元素增加索引。模式类似于

int i = 0;
while (i < list.size()) {
    ... any other computation you need to perform
    if ...you need to remove the element... {
        list.remove(i);
    } else {
        i++;
    }
}

就像我说的那样,我还没有尝试过运行你的程序,但看起来这可能是错误。