2

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

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

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

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

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

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

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];
}}
4

2 回答 2

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;
}
于 2012-04-04T10:21:53.150 回答
0

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

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

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

于 2012-04-04T10:29:55.470 回答