在Java中,for循环如何检查其条件?

在Java中,for循环如何检查其条件?,java,for-loop,Java,For Loop,我的问题与java在循环的“条件”中有print语句时检查for循环条件的顺序有关。这似乎是一件不现实的事情(我从未见过它以任何实际的方式使用),尽管我对打印内容缺乏理解,这让我认为我可能无法完全理解for循环的功能。最近的一次考试中出现了以下问题: 输入n=5时,以下方法将打印什么 public static void mystery(int n) { for (int i = -1; i < n; System.out.print(i + " ")) { i+

我的问题与java在循环的“条件”中有print语句时检查for循环条件的顺序有关。这似乎是一件不现实的事情(我从未见过它以任何实际的方式使用),尽管我对打印内容缺乏理解,这让我认为我可能无法完全理解for循环的功能。最近的一次考试中出现了以下问题:

输入n=5时,以下方法将打印什么

public static void mystery(int n) {
    for (int i = -1; i < n; System.out.print(i + " ")) {
         i++;
    }
}
公共静态无效神秘(int n){
对于(int i=-1;i
正确答案是: 01 2 3 4 5

在我看来,循环应该打印-1,然后将i增加1,打印0。。。。。直到i=4。然后它将打印4,将i增加1,并在循环的条件i
for (int i = -1; i < n; System.out.print(i + " ")) 
{
    i++;
}

这里是对的引用。

初始化表达式只发生一次。然后检查条件,然后循环体发生,然后增量表达式发生(您的
print
语句),然后我们重新开始

如果你通读一遍,你会发现答案很清楚


如果需要完整的详细信息,则可能还需要注意。

for循环在每次执行循环后执行增量步骤(括号内的第三部分)。如果切换print语句和i++,您将得到预期的结果。

for(;){
for ( <initialization> ; <test> ; <increment> ) {
     <body>
}
}
相当于:

for (int i = -1; i < n; i++) 
{
    System.out.print(i + " ")
}
<initialization>
while ( <test> ) {
    <body>
    <increment>
}

而(){
}
所以你有:

i = -1;
while ( i < n ) {
    i++;
    System.out.print(i + " ");
}
i=-1;
而(i
试题中的“问题”是,通常放在
部分的语句类型被切换

for(initialization; Boolean_expression; update)
{
   //Body
}
下面是for循环中的控制流:

  • 初始化步骤首先执行,并且只执行一次

  • 接下来,对布尔表达式求值

  • 如果布尔表达式为true,则执行循环体。如果为false,则循环体不执行,控制流跳到下一个语句,超过 for循环表示循环结束

  • 在for循环体执行之后,控制流将跳转 备份到update语句。这里将执行您的打印语句

  • 现在将再次计算布尔表达式。如果这是真的,那么 循环执行,过程自身重复(然后是循环体) 更新步骤,然后更新布尔表达式)。在布尔表达式之后 如果为false,则for循环终止

  • 下面是步骤

    in 1st step value of i is -1 at start.
    in 2nd step i=-1 is less then n=5 so body will be executed.
    in 3rd step i will be incremented to i=0
    in 4th step value of i ( which is 0 gets printed)
    in 5th step Boolean expression is evaluated again and it returns true as i=0 is less then n=5. so again step 3 ( Body of loop) is executed.
    

    第三个参数(“更新”表达式)在每次通过循环后执行。读取开始的非伪代码(作为非伪代码编号步骤的“循环”)的类似方法是删除步骤5,而是添加到步骤4的末尾。“返回到2”这句话