2014-12-26 93 views
-3

如何在Java中將二維數組作爲參數傳遞。例如,我的代碼獲取矩陣作爲輸入和顯示是這樣的:將二維數組作爲參數傳遞

import java.util.Scanner; 

class matrix { 
    int i,j; 
    static int[][] a = new int[3][3]; 
    Scanner one = new Scanner(System.in); 

    public static void main(String args[]) { 
     matrix obj = new matrix(); 
     System.out.println("Enter the Matrix"); 
     obj.getdate(a); 
     obj.display(a); 
    } 

    void getdata(int[][] a) { 
     for (i = 0; i < 3; i++) { 
      for (j = 0; j < 3; j++) { 
       a[i][j] = one.nextInt(); 
      } 
     } 
    } 

    void display(int[][] a) { 
     for (i = 0; i < 3; i++) { 
      for (j = 0; j < 3; j++) { 
       System.out.println("" + a[i][j]); 
      } 
     } 
    } 
} 

這種傳遞二維數組的方式不起作用。將2D數組傳遞給參數的正確方法是什麼?

+1

將顯示方法的簽名更改爲void display(int [] [] a)'; –

+0

它不起作用 –

+0

'不工作'這是您收到的錯誤/異常消息嗎?如果不是,那麼更好地描述你的問題。 – Tom

回答

1

問題是您正試圖從其範圍之外訪問a。爲此,您需要將方法簽名display()更改爲display(int[][] a)。這應該適合您在顯示obj.display(a);中的數組值時所進行的調用。

1

首先,您應該命名類以大寫字母開頭,例如Matrix而不是matrix遵循Java約定。

調用不帶參數定義的方法display時出現錯誤。由於數組a是一個類成員字段,因此您不需要將它傳遞給display,因爲它已經對所有類成員都可見。所以,你可以簡單地調用它,如下所示:

obj.display(); 

同樣爲getdata方法(您調用它getdate代替getdata時有一個錯字),您可以將其定義不帶任何參數:

void getdata() { 
    for (i = 0; i < 3; i++) { 
     for (j = 0; j < 3; j++) { 
      a[i][j] = one.nextInt(); 
     } 
    } 
} 

您也不需要將數組a設爲靜態。