2015-09-14 26 views
1

所以即時通訊誠實地卡在這裏,a2 [行] [列]是錯誤的,但我不知道爲什麼。我只是想念一些近距離視線?在java中獲取二維數組的錯誤

public class ArrayHW { 
public static void main(String[] args){ 
    int [][] a2 = {{10,20,30,40}, 
      {50, 60, 70 , 80}, 
      {90, 100, 110, 120}}; 
    display2DArray(); 
} 

public static void display2DArray() { 
    for (int row = 0; row < 3; row++){ 
     for (int column = 0; column < 4; column++){ 
      System.out.println(a2[row][column]); 
     } 
    } 
} 
+1

什麼錯誤?請不要讓我們猜 - 發佈完整的錯誤信息。 –

回答

2

你已經有了一個範圍問題,因爲a2 2D int數組已經在main方法內部聲明過了,因此只在同一個main方法中可見。 display2DArray方法不能看到也不能操作這個變量。一個體面的解決方案是給display2DArray方法一個int[][]參數並將數組傳遞給方法。請注意,參數名稱可以是任何有效的變量名稱,但是您需要在display2DArray方法中使用相同的變量名稱。

public static void display2DArray(int[][] foo) { 
    // avoid use of "magic" numbers and instead use the array's length field 
    for (int row = 0; row < foo.length; row++){ 
     for (int column = 0; column < foo[row].length; column++){ 
      System.out.println(foo[row][column]); 
     } 
    } 
} 

然後調用方法:

display2DArray(a2); 

另一種可行的解決方案是通過聲明它的類,而不是在main方法,使A2類的靜態字段。

+0

ahhh好的!現在明白了。有沒有辦法做同樣的事情,但沒有給它的參數?就像我離開它的方式一樣,我能夠像靜態無效一樣改變爲某種東西嗎? – ThePyroMark

+0

@ThePyroMark:是的,我在回答結束時已經告訴過你如何在不使用參數的情況下做到這一點。 –