我在这个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替换它会是错误的呢?
答案 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 = 2
和artikelTabelle.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]);
}
}