&安培;&安培;当一个语句为真时,while循环的条件将始终停止

时间:2017-09-16 10:44:36

标签: java loops while-loop

我在java中编写了这段代码(目的是" hunugry duck part 1"来自codeingame.com的拼图):

while (indexH > 0 && indexW > 0) {
        if (indexH -1 >= 0 && indexW-1 >= 0 && foodArray[indexH - 1][indexW] > foodArray[indexH][indexW-1]) { 
            indexH--;
            highestFood += foodArray[indexH][indexW];
        } else if (indexW -1 >= 0 && indexH-1 >= 0 && foodArray[indexH][indexW] > foodArray[indexH-1][indexW] ) { 
            indexW--;
            highestFood += foodArray[indexH][indexW];
        } else {
            if (indexH == 0) {
                indexW--;
                highestFood += foodArray[indexH][indexW];
            } else if(indexW == 0) {
                indexH--;
                highestFood += foodArray[indexH][indexW];
            }
        }
    }

问题是,如果indexW或indexH达到0,while循环将停止它显然不应该做的事情。你能告诉我为什么会这样吗。

1 个答案:

答案 0 :(得分:0)

如果它应该运行,即使indexW或indexH中的任何一个达到0,那么你应该使用或

while (indexH > 0 || indexW > 0) {

&安培;&安培;如果任何一个条件为假,即如果只有一个为真,则返回false

只有当两个值都等于零时才退出循环,那么你应该这样做

while (indexH != 0 || indexW != 0) {