明确地将值分配给2D数组?

Jam*_* MV 14 java

我以前从未这样做过,也找不到答案.这可能不是用于此的正确数据类型,但我只想分配一个int,然后另一个没有for循环的int进入2D数组,这些值实际上是从另一个函数返回的,但为了简单起见我刚刚使用了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}
Run Code Online (Sandbox Code Playgroud)

TIA - 如果我正在咆哮错误的树,请随意指向更好的数据结构的方向.

小智 32

最好的方法可能是一次声明并分配所有值.如图所示这里.Java将自动确定数组的大小,并将值分配给这样.

int contents[][] = { {1, 2} , { 4, 5} };
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要首先声明数组,请记住每个都contents[0][0]指向一个整数值而不是两个数组.所以要获得与上面相同的作业,你会写:

contents[0][0] = 1;
contents[0][1] = 2;
contents[1][0] = 4;
contents[1][1] = 5;
Run Code Online (Sandbox Code Playgroud)

最后我要注意,2乘2阵列的索引是0到1而不是0到2.

希望有所帮助.


Mic*_*wan 5

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

int[][] contents = new int[][]{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Run Code Online (Sandbox Code Playgroud)

请记住,Java中的2D数组实际上是一个数组数组,但如果您在声明时执行此操作,Java会为您提供一些特殊语法.


小智 5

看起来您想在一个语句中分配一行?

声明后如:

int[][] matrix = new int[2][2] //A
Run Code Online (Sandbox Code Playgroud)

或者

int[][] matrix = new int[2][] //B
Run Code Online (Sandbox Code Playgroud)

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

matrix[0][0]=1; //can only used in A, or will throw the NullPointerException.
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)