例如,我有一个输入N(直到运行时才知道),我想构建一个具有N维的数组。
我编写代码时无法定义维数,就像我们通常构建一个四维数组一样:
int [][][][] array = new int[3][3][3][3].
我需要这个数组,因为我需要存储输入的维度是灵活的,这意味着在有人在运行时输入它之前你无法知道维度。
而且,在我构建这个数组之后,我怎样才能访问它?我不能像往常那样处理它
array[1][2][3][4] = 5
因为我在编写代码时不知道维度的数量。
我如何实现目标?
答案 0 :(得分: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的数组。你想写一个类来处理所有这些 - 需要做一些工作,而你不会得到括号表示法的语法糖,但它是可行的。
答案 1 :(得分: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);
}