2017-07-26 69 views
0

我误解了这个for循环中的某些内容。有人可以澄清?带嵌套循环的Java打印阵列

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)。 但是在第二次迭代中,我和j都不是1,因为i ++和j ++?狮子应该印刷的意思是什么?我在这里误解了什么?而且由于artikelTabelle [0] .length的长度为2 - 为什么将其替换为数字2会是错误的?

+0

可以改变内部循环(带有j的那个循环)在'i'递增之前迭代两次。 – Lino

回答

5

您有两个循环,一个外部循环和另一个嵌套在外部循环内部的内部循环。

这意味着(每次i递增之前)的外循环的每次迭代,则执行的整个内循环(即j从0到artikelTabelle[0].lengthi之前递增)。

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

至于是否使用2而不是artikelTabelle[0].length,后者更安​​全,因为如果稍后更改数组的维数,则不必更改硬编码的2

+0

谢谢,我想我现在明白了。但可以肯定的是:首先内部循环在执行之前被执行,然后递增。然后打印artikelTabelle [0] [0]。然后内部循环再次执行,j递增。j是one和artikelTabelle [0] [1]被打印。然后内循环通知,如果它再次增加(2)2 <2不会工作的条件。因此它进入外部循环并增加i。我现在是1.它不通过内循环并打印artikelTabelle [1] [0]。然后内部for循环再次执行,并打印artikelTabelle [1] [1]。是对的吗? – NewbieJava

+0

@TeachMeSenpai是的,假设你打算在最后一句话中写下“它通过”而不是“它不通过”。 – Eran

+0

哦,对不起,我的错误,谢谢:) – NewbieJava

2

artikelTabelle [0]。长度确实是2

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

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

希望我能够提供帮助!

2

外部for循环将执行任何内部的指定次数。

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

变量j被限定在外部循环中并初始化,这意味着当外部循环第二次启动时,上一个变量不再存在。

1
在你代码 artikelTabelle[0].length = 2artikelTabelle.length = 2所以对于外i循环比for循环内Ĵ增加1

loopind两个时间是这样的:

I = 0 => J = 0,J = 1; i = 1 => 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]); 
     } 
    }