0

我正在修改我的 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;
            }
         }
       }
    }

所以他们给出的答案是“Hello-1”,因为 0 % 4 = 0 但我的问题是 k 不应该是 1,因为它是预先递增的?

提前致谢!

4

3 回答 3

2

for 循环具有以下结构:

for (initialization; condition; update)

在每次update执行循环后执行。

因此,以下两个循环是相同的:

for (int i = 0; i < 10; i++) {

for (int i = 0; i < 10; ++i) {
于 2013-02-16T16:32:16.137 回答
1

我的问题不应该k是 1,因为它已经预先增加了?

++k发生在循环迭代结束时,即语句之后if

不管是++k还是k++;都没有区别 在任何一种情况下, 的第一个值k都是零。

所以他们给出的答案是"Hello-1"

这显然是不正确的,因为counter它从不增加并且在整个程序中保持为零。

于 2013-02-16T16:31:46.140 回答
0

k 不能为 1。这是因为当 for 循环运行时,它只会在执行完循环内的所有代码后才会更新。由于循环甚至在第一次迭代完成之前就中断了,所以 k 保持为 0。

于 2013-02-16T16:35:06.793 回答