很抱歉问了一个简单的问题,但不幸的是,经过一个小时的调试,我有点迷路了。我想在循环重复的情况下使用“或”。不幸的是,当第一个条件为真,第二个接缝永远不被检查时,代码就会离开循环。
这是我的代码:
j=1
repeat {
if (Int(scores[1][j]) != 0) {
if (nrOfMoves < Int(scores[1][j])) {
positionToStore = j
positionFound = true
}
} else {
positionToStore = j
positionFound = true
}
j++
} while(positionFound == false || j > 5)
当positionFound为真时,当j达到6时,它就会重复,或者贝特会被异常终止
发布于 2015-11-01 02:10:58
来自文件:
重复-同时 while循环的另一个变体,称为repeat循环,在考虑循环的条件之前,先执行一次遍历循环块的操作。然后继续重复循环,直到条件为false为止。
这意味着只有条件positionFound == false || j > 5
为false
时循环才能工作。当positionFound
设置为true
时,条件变为true
,然后离开循环。
在您的情况下,您需要使用while
循环
来自文件:
而 while循环从计算单个条件开始。如果条件为true,则会重复一组语句,直到条件变为false为止。 以下是while循环的一般形式:
while positionFound == false || j > 5 {
if (Int(scores[1][j]) != 0) {
if (nrOfMoves < Int(scores[1][j])) {
positionToStore = j
positionFound = true
}
} else {
positionToStore = j
positionFound = true
}
j++
}
发布于 2015-11-01 03:43:48
repeat-while
循环中的条件告诉继续循环需要发生什么。您希望在j <= 5
中循环,这样当j
到达6
时,它就会退出该循环。而且,当这两个条件都保持不变时,您需要继续,因此在本例中,您应该使用&&
而不是||
。使用此更改后,代码会读到“只要我还没有找到我要找的东西,而且我的索引仍然很好,就继续循环”。
j=1
repeat {
if (Int(scores[1][j]) != 0) {
if (nrOfMoves < Int(scores[1][j])) {
positionToStore = j
positionFound = true
}
} else {
positionToStore = j
positionFound = true
}
j++
} while(positionFound == false && j <= 5)
positionFound == false
的一种常用的速记方式是!positionFound
,发音为"not“。
https://stackoverflow.com/questions/33460941
复制