【问题标题】:how can I decide the dimension of an array according to the input in Java如何根据Java中的输入确定数组的维度
【发布时间】:2013-07-12 16:16:03
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 你想用这个数组做什么?你能提供一些伪代码吗?
  • Java N-Dimensional Arrays 的可能重复项
  • 我需要这个数组,因为我需要存储输入的维度是灵活的,这意味着在有人输入之前你无法知道维度。
  • @rolandluo 可能是你想要别的东西,请解释你想在这里做什么..我不确定从这里创建 N 维数组是否有任何意义

标签: java multidimensional-array dynamically-generated


【解决方案1】:

你需要这样的东西吗?

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);

}

【讨论】:

    【解决方案2】:

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

    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-05-30
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2021-12-21
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多