我正在修改我的SCJA考试,我对这个问题和答案感到困惑。问题是运行和编译代码的结果是什么。
public class Test{
public static void main(String args[]){
int counter = 0;
for(int i=0; i< 4; ++i){
for(int k=0; k< 4; ++k){
system.out.println("Hello - "+ ++counter);
if((k % 4) == 0)
break;
}
}
}
}
所以他们给出的答案是&#34; Hello-1&#34;因为0%4 = 0 但我的问题是,由于它已经预先递增,因此不应该是1吗?
提前致谢!
答案 0 :(得分:2)
for循环具有以下结构:
for (initialization; condition; update)
{/ 1}}在每次执行循环后执行。
因此以下两个循环是相同的:
update
和
for (int i = 0; i < 10; i++) {
答案 1 :(得分:1)
我的问题是
k
不应该是1,因为它已经预先递增了吗?
++k
发生在循环迭代结束时,即之后 if
语句。
它是++k
还是k++
没有区别;在任何一种情况下,k
的第一个值都为零。
所以他们给出的答案是
"Hello-1"
这显然是不正确的,因为counter
永远不会增加,并且在整个程序中保持为零。
答案 2 :(得分:0)
k不能是1。 这是因为当for循环运行时,它只会在循环中执行完所有代码后才会更新。由于在第一次迭代完成之前循环中断,因此k保持为0。