2014-07-15 29 views
2

我已經嘗試了好幾次,但無濟於事,它只輸出第一行。這是一個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]+ " "); 
      } 
     } 
    } 
} 
+1

你的代碼'java.lang.ArrayIndexOutOfBoundsException崩潰:6'。您無法通過String [] [] countries = new String [6] [];'訪問'countries [6]''。它只能達到5. – OldCurmudgeon

回答

0

你內心的循環語句應該是for(j = 0; j < countries[i].length; j++),和你的for循環外應for(i = 0; i < countries.length; i++)

就目前而言,你並沒有完全循環第二維。我確實很驚訝你沒有看到錯誤,因爲根據你的數組,你應該有大量的非法訪問異常。當您嘗試訪問數組的末尾時,Java會變得非常不安(例如:您的內部數組只包含4個元素,但您的內部for循環會迭代到j=5,這意味着您正在訪問4元素數組中的第5個元素)

+0

thanx ..它活着!!!!!! :) –

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]+ " "); 

否則,它只會在單個陣列上循環兩次

+0

thanx ..活着!!!!!! :) –

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; ......){ ... } 
+0

thanx ..它活着!!!!!! :) –

+0

@Fritz_Playmaker很高興提供幫助,如果您的問題得到解答,請將答案標記爲已接受。如果您的問題沒有得到解答,請提供更多信息。快樂編程! –

0

問題很簡單,你是正確的,你的嵌套for循環有一個邏輯錯誤。

你正在運行它針對整個數組的長度應該改爲:

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