输出2d数组中的值不起作用

时间:2014-07-15 14:38:17

标签: java

我已经尝试了好几次但无济于事只能输出第一行。它是一个2D数组,它应该输出4行。它没有显示任何错误。我认为逻辑错误可能来自包含输出语句的for循环。

package aitiDay5;

public class WorldCup {

    public static void main(String[] args){
        int i=0,j=0;

        String [][] countries = new String [6][];
        countries[0]=new String[4];
        countries[1]=new String[4];
        countries[2]=new String[4];
        countries[3]=new String[4];
        countries[4]=new String[4];
        countries[5]=new String[4];
        countries[6]=new String[4];

        countries[0][0]="Countries ";
        countries[0][1]="Rival ";
        countries[0][2]="Grade ";
        countries[0][3]="Points ";

        countries[1][0]="Ghana";
        countries[1][1]="Germany";
        countries[1][2]="C";
        countries[1][3]="3";

        countries[2][0]="Croatia";
        countries[2][1]="Greece";
        countries[2][2]="B+";
        countries[2][3]="A-";

        countries[3][0]="USA";
        countries[3][1]="Portugal";
        countries[3][2]="B+";
        countries[3][3]="4";

        countries[4][0]="Spain";
        countries[4][1]="Costa Rica";
        countries[4][2]="F+";
        countries[4][3]="-2";

        countries[5][0]="Brazil";
        countries[5][1]="Germany";
        countries[5][2]="Z";
        countries[5][3]="-32";

        countries[6][0]="Argentina";
        countries[6][1]="Holland";
        countries[6][2]="A";
        countries[6][3]="10";

        for ( i=0;i<=countries.length;i++){
            System.out.println("\n");

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

4 个答案:

答案 0 :(得分:2)

您的第一个for循环语句应该只使用<运算符,而不是<=运算符。

你的第二个循环应该在行中索引以检查长度。

for (i = 0; i < countries.length; i++){
    System.out.println("\n");
    for(j = 0; j < countries[i].length; j++){
        System.out.println(countries[i][j] + " ");
    }
}

此外,由于您似乎需要7行,因此需要更改

String [][] countries = new String [6][];

String [][] countries = new String [7][];

附注:您不必在for循环之外拥有ij。你可以这样做:

for(int i = 0; ......){ ... }

答案 1 :(得分:0)

你的内部for循环语句应该是for(j = 0; j < countries[i].length; j++),你的外部for循环应该是for(i = 0; i < countries.length; i++)

目前看来,你还没有完全绕过第二个维度。我真的很惊讶你没有看到错误,因为基于你的阵列你应该有大量的非法访问异常。当你尝试访问数组的末尾时,Java会变得非常沮丧(例如:你的内部数组只包含4个元素,但你的内部for循环迭代到j=5,这意味着你正在访问4中的第5个元素元素数组)

答案 2 :(得分:0)

你需要改变这一行

 for(j=0;j<countries.length;j++){
        System.out.println(countries[i][j]+ " ");

对此:

 for(j=0;j<countries[i].length;j++){
        System.out.println(countries[i][j]+ " ");

否则它只会在单个数组上循环两次

答案 3 :(得分:0)

问题很简单,你是对的,你的嵌套for循环中存在逻辑错误。

您正在按照应该更改为的整个数组的长度运行它:

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