0

例如,我有一个输入 N(直到运行时你才知道),我想构建一个 N 维的数组。

当我编写代码时,我无法定义维数,就像我们通常构建一个四维数组时一样:

int [][][][] array = new int[3][3][3][3].  

我需要这个数组,因为我需要存储输入的维度是灵活的,这意味着在有人在运行时输入之前你无法知道维度。

更重要的是,在我构建了这个数组之后,我怎样才能访问它?我不能像往常一样处理它

array[1][2][3][4] = 5

因为我写代码时不知道维数。

我怎样才能达到我的目标?

4

2 回答 2

0

可能你不想这样做。几乎可以肯定,有更好的方法来处理您正在尝试做的任何事情。但是,这里有一个可能有帮助的例子。

public class Arr {
        public static void main(String[] args)
        {
                int n = 7;
                int [][][][] foo = new int [n][n][n][n];
                foo[1][2][3][4] = 5;
                System.out.println(foo[1][2][3][4]);
        }

}

编辑:啊!我现在知道了。您希望用户输入 N 并获得 N 维度的数组,而不是设置维度的比例。这很棘手。您可以通过创建一个长度为 d1*d2*...*dN 的数组来伪造它。例如,3X4 的 2D 数组显然是 12 的 1D 数组,而 3X4X5 数组只是 60 的数组。您需要编写一个类来处理所有这些 - 需要做一些工作,而您不会得到括号表示法的语法糖,但它是可行的。

于 2013-07-12T16:23:14.563 回答
0

你需要这样的东西吗?

static Object[] getNArray(int n) {
    Object[] arr = new Object[n];
    for (int i = 0; i < n-1; i++) {
        arr[i] = getNArray(n - 1);
    }
    return arr;
}

public static void main(String[] args) {
    Object[] arr = getNArray(1);
    System.out.println(arr);

}
于 2013-07-12T16:27:34.833 回答