【问题标题】:While loop multiple conditions don't check both conditions虽然循环多个条件不检查两个条件
【发布时间】:2016-05-18 09:21:12
【问题描述】:
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 循环就会停止。我认为 && 意味着必须满足这两个条件。

【问题讨论】:

    标签: javascript loops while-loop conditional-statements


    【解决方案1】:

    我认为 && 意味着两个条件都必须满足

    确实如此。 x 不再小于 10,因此不满足条件。你想要一个or,其中任何一个条件都必须满足:

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

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

    【讨论】:

      【解决方案2】:

      如果你想要两个条件(x 小于 10 并且 y 也小于 20):

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

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

      但是,如果您想要任何一个条件(x 小于 10 或 y 小于 20):

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

      【讨论】:

        【解决方案3】:

        您需要x &lt; 10 || y &lt; 20!(x &gt;= 10 &amp;&amp; y &gt;= 20),根据您的问题文本判断可能会更清楚。

        但请注意,x 会超过 10 点。

        【讨论】:

          【解决方案4】:

          我认为 && 意味着两个条件都必须满足

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

          正如其他人指出的那样,如果您希望满足任一条件,则必须使用或:

          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 是否更大),但停止打印/增加较小的数字

          【讨论】:

            【解决方案5】:

            condition1 &amp;&amp; condition2 将用它们各自的布尔值(真/假)替换条件 1 和 2。

            在您的情况下,只要 x 超过 10,表达式就变为
            False &amp;&amp; Condition2,它始终是 False基本布尔代数)。


            x&lt;10 || y&lt;10进行更正

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-03-02
              • 2014-01-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-01
              • 2019-09-25
              相关资源
              最近更新 更多