理解for循环

时间:2015-10-28 14:49:17

标签: java for-loop

以下Java代码段的输出为10,但我不明白为什么。

public class CodeComprehension {
    public static void main(String[] args) {

    int count = 0;
    for(int i=0;i<5;i++)
        for(int j=0;j<i;j++)
            for(int k=0;k<j;k++)
                count++;
    System.out.println(count);      
}
}

int变量count出现在三个for循环中。在我看来,输出应为1。

1 个答案:

答案 0 :(得分:1)

我将继续进行并添加一个答案,以防止任何进一步的混淆。基本上自我回答这个问题的建议就是这样做:

public static void main(String[] args) {

    int count = 0;
    for(int i=0;i<5;i++) {

        System.out.println("I-LOOP: I: "+  i + ", COUNT: " + count);

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

            System.out.println("  J-LOOP: I: "+  i + ", J: " + j + ", COUNT: " + count);

            for(int k=0;k<j;k++) {
                // this is the code actually inside the loop(s)
                count++;
                System.out.println("    K-LOOP: I: "+  i + ", J: " + j + ", K: " + k + ", COUNT: " + count);
            }
        }
    }

    System.out.println("END COUNT: " + count);      
}

我在这里做的是为for循环添加一些花括号,以使其更加直观地发生在&#34;内部&#34;每个循环。如果您编译并运行此版本的代码,您应该会看到每个循环的每次迭代都有很多行。希望当你看到每次迭代的那些单独的i,j和k值时,当你有嵌套循环时,将更容易理解代码流的方式。

从中可以拿走两件主要内容;

  • System.out.println()是您拥有的最佳调试和理解工具。不要使用它,滥用它

  • 总是在循环语句中使用花括号。代码更容易阅读,它可以消除任何犯错的可能性。

这是输出:

I-LOOP: I: 0, COUNT: 0
I-LOOP: I: 1, COUNT: 0
  J-LOOP: I: 1, J: 0, COUNT: 0
I-LOOP: I: 2, COUNT: 0
  J-LOOP: I: 2, J: 0, COUNT: 0
  J-LOOP: I: 2, J: 1, COUNT: 0
    K-LOOP: I: 2, J: 1, K: 0, COUNT: 1
I-LOOP: I: 3, COUNT: 1
  J-LOOP: I: 3, J: 0, COUNT: 1
  J-LOOP: I: 3, J: 1, COUNT: 1
    K-LOOP: I: 3, J: 1, K: 0, COUNT: 2
  J-LOOP: I: 3, J: 2, COUNT: 2
    K-LOOP: I: 3, J: 2, K: 0, COUNT: 3
    K-LOOP: I: 3, J: 2, K: 1, COUNT: 4
I-LOOP: I: 4, COUNT: 4
  J-LOOP: I: 4, J: 0, COUNT: 4
  J-LOOP: I: 4, J: 1, COUNT: 4
    K-LOOP: I: 4, J: 1, K: 0, COUNT: 5
  J-LOOP: I: 4, J: 2, COUNT: 5
    K-LOOP: I: 4, J: 2, K: 0, COUNT: 6
    K-LOOP: I: 4, J: 2, K: 1, COUNT: 7
  J-LOOP: I: 4, J: 3, COUNT: 7
    K-LOOP: I: 4, J: 3, K: 0, COUNT: 8
    K-LOOP: I: 4, J: 3, K: 1, COUNT: 9
    K-LOOP: I: 4, J: 3, K: 2, COUNT: 10
END COUNT: 10