for循环如何检查Java中的条件?

its*_*ieb 9 java for-loop

我的问题是关于在哪些Java检查的条件for循环时,有一个print语句的顺序做该循环的"条件".这似乎是一个不切实际的事情(我还没有见过它在任何实际的方式使用),但我缺乏的是什么印有理解我想,我可能不完全了解一个for循环的功能.最近的一次考试出现了以下问题:

使用n = 5的输入打印以下方法是什么?

public static void mystery(int n) {
    for (int i = -1; i < n; System.out.print(i + " ")) {
         i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

正确答案是:0 1 2 3 4 5

对我来说,似乎应该循环打印-1,然后加1我,打印0 .....直到我= 4,然后将打印4,加1我,并打破循环循环的条件i <n.为什么正确答案是什么,为什么我的逻辑存在缺陷?

may*_*Van 13

for ( <initialization> ; <test> ; <increment> ) {
     <body>
}
Run Code Online (Sandbox Code Playgroud)

等同于:

<initialization>
while ( <test> ) {
    <body>
    <increment>
}
Run Code Online (Sandbox Code Playgroud)

所以你有了:

i = -1;
while ( i < n ) {
    i++;
    System.out.print(i + " ");
}
Run Code Online (Sandbox Code Playgroud)

测试问题中的"问题"是通常放入<increment><body>部分的语句类型被切换.


Sot*_*lis 8

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

如果您仔细阅读,官方教程非常清楚.

如果您需要完整的详细信息,该for语句Java语言规范条目可能也很有趣.