在Java中将一个数组存储在一个二维数组中

4

为什么这不起作用?不太确定为什么这是不可能的 - 我只是想将大小为2的数组存储在二维数组中。

我知道这相当于设置 storage[0][0] = array[0] 和 storage[0][1] = array[1],但只是想知道为什么这是不正确的。

public class Test {

    public static void main(String[] args) {
        boolean[][] storage = new boolean[10][2];
        boolean[] array = new boolean[2];
        array[0] = true;
        array[1] = false;

        storage[0][] = array; //Why can't I do this?
    }
}

提前感谢您的帮助。


应该是 storage[0]=array;,因为如果 storage 是一个二维数组,那么 storage[i] 就是一个一维数组,与你的 array 变量类似。 - Alexis C.
3个回答

3
您的分配中有一对杂波括号。只需使用
storage[0] = array;

1
@FraserPrice 我注意到您还没有接受任何一个问题的答案。如果有答案对您有帮助,请点赞;如果有一个答案解决了您的问题,请接受它。 - chrylis -cautiouslyoptimistic-

0

首先,boolean[][] storage = new boolean[10][2] 声明并初始化了一个数组。

因此,您创建了11个数组。其中一个是 boolean[] 元素类型,另外10个是 boolean 类型。

如果您想直接访问它的成员,这很好,但如果您稍后使用 new boolean[] 创建内部数组,则会增加额外开销。

请改用 boolean[][] storage = new boolean[10][];

然后,您可以访问它的元素,这些元素是 boolean[] 类型,并将您的数组分配给它。

storage[0] = array;

0

你的问题在于有多余的方括号(我相信你已经知道了)。你的代码应该像这样:

storage[0] = array;

前面的回答并没有真正解释为什么,这就是我要做的。

你想要做的是让第一个位置(storage[0])持有与array相同的值。array是一维的,所以它只能是storage的一部分,而storage是二维的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接