2017-07-29 30 views
2

每當我傳遞兩個1-d數組作爲參數傳遞給它工作細2- d數組,但是當我嘗試三個1 d數組傳遞給一個3-d數組參數方法那麼它會給出錯誤,但是當我將三個一維數組傳遞給二維數組時,它的工作正常。多維數組文檔版本的Java

什麼是behined這種現象的原因是什麼?

兩個1-d陣列2-d的方法: -

int[] c=new int[] {4,50}; 
     m1(new int[]{10,20},c); 


    public static void m1(int[]... a)] 

三個1 d陣列,將3 d方法: -,錯誤 - The method m1(int[][]...) in the type Asd is not applicable for the arguments (int[], int[], int[])

int[] b=new int[] {3,50}; 
int[] c=new int[] {4,50}; 
     m1(new int[]{10,20},c,new int[] {4,50}); 


    public static void m1(int[][]... a) 

三個一維陣列到二維陣列: -

int[] c=new int[] {4,50}; 
     m1(new int[]{10,20},c,new int[] {4,50}); 
    } 

    public static void m1(int[]... a) 
+1

您認爲包含錯誤的任何特定原因會有幫助嗎? –

+1

嘛'INT [] [] ...了'預計二維數組,但你通過一維數組。如何認爲這應該工作? 1d陣列應放置在「a」陣列中嗎? – Pshemo

+0

你總是通過一個一維數組。 – isah

回答

3

省略號(...)僅僅是一個數組。

int[]...a <=> int[][] a 

int[][]...a <=> int[][][] a 

第二爲例的M1方法等待一個三維數組或2D數組列表,但你有一維數組列表叫它

了良好的通話是:

m1(new int[][], new int[][] , ...) 

和在m1方法中,arg是int [] [] []