【问题标题】:Explicitly assigning values to a 2D Array?将值显式分配给二维数组?
【发布时间】:2012-02-16 19:53:16
【问题描述】:

我以前从未这样做过,也找不到答案。这可能不是用于此的正确数据类型,但我只想分配一个 int,然后将另一个没有 for 循环的 int 分配到二维数组中,这些值实际上是从另一个函数返回的,但为简单起见,我已经刚刚使用了 int i 和 k,我以为你会这样做,但事实并非如此:

int contents[][] = new int[2][2];
            contents[0][0] = {int i, int k}
            contents[1][1] = {int i, int k}
            contents[2][2] = {int i, int k}

TIA - 如果我找错了树,请随时为我指出一个更好的数据结构的方向。

【问题讨论】:

  • 为什么不对数组进行迭代并通过方法调用进行分配。? for(...) 内容[i][j] = {xMethod(), yMethod()};

标签: java


【解决方案1】:

最好的方法可能是一次声明和分配所有值。如图here。 Java 会自动计算出数组的大小并像这样分配值。

int contents[][] = { {1, 2} , { 4, 5} };

或者,如果您需要先声明数组,请记住每个 contents[0][0] 指向一个整数值,而不是两个数组。因此,要获得与上述相同的任务,您将编写:

contents[0][0] = 1;
contents[0][1] = 2;
contents[1][0] = 4;
contents[1][1] = 5;

最后我应该注意,2×2 数组是从 0 到 1 的索引,而不是从 0 到 2 的索引。

希望对您有所帮助。

【讨论】:

  • 投票选出最完整的答案。
【解决方案2】:

您是否希望在声明时分配二维数组中的所有值?如果是这样,它的工作原理如下:

int[][] contents = new int[][]{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

请记住,Java 中的二维数组实际上是一个数组数组,但如果您在声明时这样做,Java 会为您提供一些特殊的语法。

【讨论】:

  • 就我而言,我需要这个东西public int[][] insert(int[][] intervals, int[] newInterval) { if (intervals.length == 0) return new int[][] { newInterval };,谢谢。
【解决方案3】:

您似乎想在一个语句中分配一行?

声明后如下:

int[][] matrix = new int[2][2] //A

int[][] matrix = new int[2][] //B

你可以使用两种赋值语句:

matrix[0][0]=1; //can only used in A, or will throw the NullPointerException.
matrix[1]=new int[] {3,3,5};//This can be used both in A and B. In A, the second row will have 3 elements.

【讨论】:

    【解决方案4】:

    你想要这个:

    int [][] t = {{1,2,3},{4,5,6}};
    

    【讨论】:

      【解决方案5】:

      contents[0][0] 指向单个整数,而不是整数数组。您只能为数组中的任何特定索引分配一个值。

      【讨论】:

        【解决方案6】:

        这是你的意思吗?

        int contents[][] = new int[2][2];
        contents[0][0] = 1;
        contents[1][1] = 2;
        ...
        

        这将允许您为二维数组中的元素单独分配值,一次一个。

        另外请注意,您不能访问大小为 2 的数组中的索引 2。大小为 2 的数组有 2 个有效索引(0 和 1)。一般来说,一个大小为 N 的数组有 N 个有效索引 (0...(N-1))

        【讨论】:

        • 是的,对不起,这只是我的例子中的一个错字。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-13
        • 2017-08-09
        相关资源
        最近更新 更多