繁体   English   中英

虽然循环多个条件不会同时检查两个条件

[英]While loop multiple conditions don't check both conditions

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,循环就会停止。我认为&&意味着必须同时满足两个条件。

我以为&&意味着必须同时满足两个条件

是的 x不再小于10,因此不满足条件。 您需要一个 ,其中必须满足以下任一条件:

while (x < 10 || y < 20){

尽管在这种简单情况下,循环仍仅由y变量控制,因为它们以相同的速率递增。

如果您同时需要两个条件(x小于10并且y小于20):

while (x < 10 && y < 20){

在您的示例x​​ = 11中,因此不满足此条件。

但是,如果您希望同时满足以下条件(x小于10或y小于20):

while (x < 10 || y < 20){

您要x < 10 || y < 20 x < 10 || y < 20相反,或!(x >= 10 && y >= 20) ,根据问题文本判断,您可能会发现它更清晰。

但请注意, x将超过10。

condition1 && condition2将用它们各自的布尔值(True / False)代替condition1&2。

在您的情况下,x越过10,表达式将变为
False && Condition2始终为False基本布尔代数 )。

用纠正
x<10 || y<10

我以为&&意味着必须同时满足两个条件

实际上,这意味着必须同时满足两个条件。 一旦一种情况失败,循环就会结束。

正如其他人指出的,如果您希望满足其他条件,则必须使用or:

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较大,则无关紧要),但停止打印/增加较小的数字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM