我的问题是关于在哪些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>部分的语句类型被切换.
初始化表达式发生一次.然后检查条件,然后发生循环体,然后发生增量表达式(你的print语句),然后我们重新开始.
如果您仔细阅读,官方教程非常清楚.
如果您需要完整的详细信息,该for语句的Java语言规范条目可能也很有趣.