2017-07-29 102 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 [] [] []