我在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循环将停止它显然不应该做的事情。你能告诉我为什么会这样吗。
答案 0 :(得分:0)
如果它应该运行,即使indexW或indexH中的任何一个达到0,那么你应该使用或
while (indexH > 0 || indexW > 0) {
或
&安培;&安培;如果任何一个条件为假,即如果只有一个为真,则返回false
只有当两个值都等于零时才退出循环,那么你应该这样做
while (indexH != 0 || indexW != 0) {