具有嵌套循环的Java打印数组

时间:2017-07-26 11:34:50

标签: java arrays

我在这个for循环中误解了一些东西。请有人澄清一下吗?

String[][] artikelTabelle;

    artikelTabelle = new String[2][2]; 

    artikelTabelle[0][0] = "Cow";
    artikelTabelle[0][1] = "Sheep";
    artikelTabelle[1][0] = "Dog";
    artikelTabelle[1][1] = "Lion";


    for(int i = 0; i < artikelTabelle.length; i++){ 
        for(int j = 0; j < artikelTabelle[0].length; j++){ 
            System.out.println(artikelTabelle[i][j]);
        }
    }

首先i和j为0.因此,打印数组[0] [0](Cow)。 但是在第二次迭代中,因为i ++和j ++而不是i和j都是1?是否应该打印狮子?我在这里误解了什么?因为artikelTabelle [0] .length的长度为2 - 为什么用数字2替换它会是错误的呢?

4 个答案:

答案 0 :(得分:5)

你有两个循环,一个是外循环,另一个内循环嵌套在外循环中。

这意味着对于外部循环的每次迭代(在每次i递增之前),执行整个内部循环(即j从{0}变为artikelTabelle[0].length { {1}}递增)。

因此,首先打印i,然后打印artikelTabelle[0][0](而不是artikelTabelle[0][1])。 artikelTabelle[1][1]仅在外循环的第二次迭代中打印。

至于是否使用artikelTabelle[1][1]代替2,后者更安​​全,因为如果以后您更改了硬编码artikelTabelle[0].length,则不必更改数组的维度。

答案 1 :(得分:2)

artikelTabelle [0] .length确实是2.

但是,你误读了循环。它是这样的:

你开始时我是0,j是0.你打印出artikelTabelle [0] [0]。 现在,我们仍处于第二个for循环中。我们的终止条件尚未实现。所以我仍然是0,我们将j增加到1.现在我们打印出artikelTabelle [0] [1]。由于我们现在满足条件终止第二个for循环,我们恢复第一个循环。我增加到1,我们重复这个过程。我们打印出artikelTabelle [1] [0]然后打印artikelTabelle [1] [1]。

希望我能帮忙!

答案 2 :(得分:2)

外部for循环将执行其中指定的任何内容。

因此,内部代码(此处也是for循环)将被执行多次。

变量j的作用域为,并在外循环中初始化,这意味着当外循环第二次启动时,前一个变量不再存在。

答案 3 :(得分:1)

你在代码artikelTabelle[0].length = 2artikelTabelle.length = 2中的

所以对于外部i循环增加1比内部j为循环loopind两次这样:

i = 0 =&gt; j = 0,j = 1; i = 1 =&gt; j = 0,j = 1;

for(int i = 0; i < artikelTabelle.length; i++){ 
        for(int j = 0; j < artikelTabelle[0].length; j++){ 
            System.out.println(artikelTabelle[i][j]);
        }
    }