接收未定义数量的数组的方法

时间:2012-04-04 10:12:22

标签: java arrays list arguments variable-length

前段时间我正在玩使用可变长度参数列表(java)的方法,这些方法定义如下

public static int[] makeArray (int... a) {
return a;
}

这是一个愚蠢的程序,但它会做的是接受一个未定义的整数并从中创建一个数组,所以下面所有的都会调用相同的方法

makeArray(1);
makeArray(1,2);
makeArray(1,2,3);

现在我要做的是创建一个具有相同效果但使用数组而不是整数的方法。我认为它可以通过将数组放入2d数组来实现这一点,但我不能100%确定这是否可行,因为添加的数组可能会有所不同。 (也许因为这个原因,这是不可能的?)。但据我所知,2d数组是制作数组数组的唯一方法。

我试过了(请注意这不是我对此的实际用途,我只是用它来试验看看如何做到这一点)

public static int countArrays(int[]... a) {
return a.length;
}

这并没有编译。

有人可以提出任何建议吗?

对任何有兴趣的人。我想要做的是创建一个方法,它将接受X许多数组,然后基于该运行for循环,以便它添加所有数组

例如:

int[] sum = new int[a[0].length];
for (int i=0; i<a.length; i++){
for (int j=0; j<a[0].length; j++){
n[i] += a[i][j];
}}

2 个答案:

答案 0 :(得分:2)

不确定为什么你说它不能编译 - 以下示例适用于我(编译和打印2):

public static void main(String[] args) throws Exception {
    int[] i1 = new int[]{1,2,3};
    int[] i2 = new int[]{1,2,3};
    int count = countArrays(i1, i2);
    System.out.println(count);
}

public static int countArrays(int[]... a) {
    return a.length;
}

答案 1 :(得分:0)

关于数组大小不同的观点。您可以使用以下内容:

int[][] b = new int[10][];
int[] c = new int[2];
int[] d = new int[2131231];
b[0] = c;
b[1] = d;

不要预先定义数组内部数组长度 - 这将完成所有业务。