var x = 0;
var y = 0;
while (x < 10 && y < 20){
x += 1;
y += 1;
console.log('This is x: ', x)
console.log('This is y: ', y)
}
我认为我不了解循环中的多个条件是如何工作的。我希望代码要做的是继续循环,直到x大于10且y大于20,但是当x大于10时循环停止。我想&amp;&amp;意味着必须满足这两个条件。
答案 0 :(得分:4)
我认为&amp;&amp;意味着必须满足两个条件
确实如此。 x
不再小于10,因此不符合条件。您需要一个or,其中必须符合条件:
while (x < 10 || y < 20){
虽然在这种简单的情况下,循环仅由y
变量控制,因为它们以相同的速率递增。
答案 1 :(得分:2)
如果您想要两个条件(x小于10且Y小于20):
while (x < 10 || y < 20){
在您的示例x = 11中,因此不符合此条件。
但是如果你想要条件的任何一个(x小于10或者y小于20):
{{1}}
答案 2 :(得分:1)
您需要x < 10 || y < 20
代替!(x >= 10 && y >= 20)
,或者x
您可以通过问题文本更清楚地判断。
但请注意LoadingCache
将超过10。
答案 3 :(得分:1)
condition1 && condition2
将取代condition1&amp; 2具有各自的布尔值(True / False)。
在你的情况下,只要x超过10,表达式就变为
False && Condition2
始终为False
(基本布尔代数)。
用
修正它
x<10 || y<10
答案 4 :(得分:1)
我认为&amp;&amp;意味着必须满足两个条件
实际上这意味着必须满足两个条件。一旦一个条件失败,循环结束。
正如其他人指出,如果你想要满足条件,你必须使用或:
while (x < 10 || y < 20){
至于您的预期输出,只有一个循环无法满足。你需要一个额外的条件:
while (y < 20){ // keep going until y == 20
if(x < 10) { // only increase/print x while < 10
x += 1;
console.log('This is x: ', x)
}
// always print y - since its the bigger one
y += 1;
console.log('This is y: ', y)
}
这只能起作用,因为您知道哪个数字会变大(y> x)。如果您事先不知道自己的限制,但仍想要类似的结果,则必须使用如下代码:
int MAX_X = 10;
int MAX_Y = 20;
while (y < MAX_X || x < MAX_Y){ // keep going until both limits are reached
if(x < MAX_X) { // only increase/print x while < max_x
x += 1;
console.log('This is x: ', x)
}
if(y < MAX_Y) { // only increase/print y while < max_y
y += 1;
console.log('This is y: ', y)
}
}
这将持续到达到最大限制(如果X或Y更大则无关紧要),但停止打印/增加较小的数字