【问题标题】:Java- why is if() block inside of while() statement executed?Java-为什么执行while()语句中的if()块?
【发布时间】:2013-08-06 03:52:21
【问题描述】:

我需要解释一下,为什么在while() 语句中执行if() 块。据说:while 语句计算表达式,它必须返回一个布尔值。如果表达式的计算结果为真,while 语句将执行 while 块中的语句。所以请看一下这段代码:

class test{
static int x;

public static void main(String args[]){
    while(x!=5){
        x=x+1;
        if(x==5)
            System.out.println("I'm 5 now!");
    }
  }
}

一旦变量 x 增加到 5,不应该将 (x!=5) 视为错误吗?那么 if 块怎么会被执行呢?基本上,它似乎为表达式 5!=5 返回了 true 布尔值。

谢谢你的解释!

【问题讨论】:

  • x = 4,下一行将 x 加 1,因此在 if 语句时 x = 5
  • 使用+=++ 而不是x = x + 1。所以x++.
  • 详细了解 while 语句。 while 中的条件仅在执行 while 主体之前(以及在执行 while 主体之后)评估 docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html
  • 如果你调试过代码(它闻起来像家庭作业),你会自己找到答案;)

标签: java if-statement while-loop


【解决方案1】:

当您输入循环的主体和x == 4 时,它会继续进行。

然后,将1 添加到变量中。

现在是5,所以if的条件为真!

【讨论】:

    【解决方案2】:

    当 x=4 即 (4!=5 right??) 时进入 while 循环

    并且 x=x+1 在 while 循环内执行,所以 x=5;和下一行 while 循环内部是 if(x==5) System.out.println("I'm 5 now!");

    由于 x 的值为 5 ,执行进入 if 条件,我们将 得到输出“我现在 5 岁!”

    【讨论】:

      【解决方案3】:
        while(x!=5){ // here maximum value accept as true is 4
              x=x+1; // now 4+1 and x =5
              if(x==5) //yes condition satisfied 
                  System.out.println("I'm 5 now!"); //so out put will print 
          }
      

      【讨论】:

        【解决方案4】:

        表达式 x == 5 被评估为真,因为 x 在 while 循环内被更改。

        当 x 等于 4(这意味着 x != 5 仍然计算为真)时,下一行 (x = x + 1) 的结果是 x 为 5。

        【讨论】:

          【解决方案5】:

          虽然循环被称为前置条件循环,这意味着它们在执行某些语句块之前检查条件

          所以当x 在循环体中变为5 时,实际检查的最后一个条件是x != 4

          x != 5 将在循环的下一次迭代中被检查。

          【讨论】:

          • 这应该是正确的答案。我认为@Matt 不明白 while 的主体中没有评估 while 条件
          【解决方案6】:

          当你进入X等于4的循环时,它首先递增到5,因此满足表达式x == 5

          但是,在下一次迭代中,while 中的条件不再为真。

          【讨论】:

            【解决方案7】:

            这是因为你的x 在它进入循环之后变成等于 5 。在下一次迭代中,循环停止。您应该在 if 之后移动 x=x+1 行,以使其按您想要的方式工作

            【讨论】:

              【解决方案8】:

              如果 x == 4 则满足 x != 5。然后你增加 x x = x+1 并拥有 x == 5。这就是为什么

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-07-07
                • 1970-01-01
                • 2017-07-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多