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

时间:2016-02-08 16:18:20

标签: javascript loops while-loop conditional-statements

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;意味着必须满足这两个条件。

5 个答案:

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