2012-02-16 103 views
11

我从来没有这样做过,无法找到答案。这可能不是正确的数据类型用于此,但我只想分配一个int,然后另一个int没有一个for循环成二维数组,这些值实际上将从另一个函数返回,但为了简单起见,我已经只是用INT I和K,这是我想你会做到这一点,但它不是:将值明确分配给2D数组?

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 - 随意点我一个更好的数据结构的方向,如果我这样做吠叫错误的树。

+0

为什么不重复数组并通过方法调用进行赋值? for(...)contents [i] [j] = {xMethod(),yMethod()}; – Juvanis 2012-02-16 19:56:23

回答

26

最好的方法可能是一次声明和分配所有值。如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

希望帮助索引。

+0

投票最多的答案。 – 2014-07-30 19:37:56

0

这是你的意思吗?

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

+0

对不起,这只是我的例子中的一个错字。 – 2012-02-16 20:02:13

4

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

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

请记住,一个二维数组在Java中确实是一个数组的数组,但如果你这样做在声明时的Java给你一些特殊的语法。

2

希望此:

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

内容[0] [0]指向单个int,不是整数的阵列。您只能将单个值分配给数组中的任何特定索引。

0
int Array[][] = {{1, 2}, {3, 4}}; 

这个数组做了2 * 2 [Row * column] = 4个表格。 存储1行1列1。 其中存储1行2列2。