数组中for循环的逻辑错误

时间:2013-12-17 13:12:05

标签: java for-loop

好的,所以我告诉我的内循环有一个轻微的逻辑错误。显然,如果我的[2] [2]数组是2X3元素或3X2元素,它不会工作,有人可以告诉我如何解决这个小问题吗?

public static void dispArr(String [][] country){
    for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array 
        for(int j= 0; j<country.length; j++){
            System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above.
        }

        System.out.println("\n"); //create space between both
    }   
}

4 个答案:

答案 0 :(得分:8)

将其更改为:

for (int i = 0; i < country.length; i++) {

                     // note the change here
    for (int j = 0; j < country[i].length; j++) {
        // ...
    }
}

否则,内部循环将不会计算到它所需的数量。

举个简单的例子,如果你有这个:

[[1, 2, 3], [4, 5, 6]]

它将成为(使用您的原始代码):

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

              // oh no! not counting far enough
    for (int j = 0; j < 2; j++) {
        // ...
    }
}

你必须采用你正在循环的内部数组的长度,而不是数量的内部数组,如果这对你有意义的话。

答案 1 :(得分:2)

在Java中,二维数组本质上是一个数组数组。因此,在计算第二个维度时,需要放置第一个维度(数组)的索引。

public static void dispArr(String [][] country){
    for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array 

        for(int j= 0; j<country[i].length; j++){

            System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above.
        }

        System.out.println("\n"); //create space between both
    }   
}

答案 2 :(得分:0)

country.length仅为您提供第一个维度。 country[i].length将为您提供第二个维度。

答案 3 :(得分:0)

你的内循环迭代矩阵中的第一个维度,应该是

for ( int j=0; j < country[i].length; j++ ) { ...

代替。请注意[i]之后的country

干杯,