我已经尝试了好几次但无济于事只能输出第一行。它是一个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]+ " ");
}
}
}
}
答案 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循环之外拥有i
和j
。你可以这样做:
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]+ " ");
}