考虑:

int[][] multD = new int[5][];
multD[0] = new int[10];

这就是创建5行10列的二维数组的方法吗?

我在网上看到了这段代码,但语法没有意义。


当前回答

int rows = 5;
int cols = 10;

int[] multD = new int[rows * cols];

for (int r = 0; r < rows; r++)
{
  for (int c = 0; c < cols; c++)
  {
     int index = r * cols + c;
     multD[index] = index * 2;
  }
}

享受吧!

其他回答

Try:

int[][] multD = new int[5][10];

注意,在代码中,只有2D数组的第一行被初始化为0。 第二行到第五行根本不存在。如果你试着打印它们,你会得到所有的null。

创建5行10列的二维数组最常见的习惯用法是:

int[][] multD = new int[5][10];

或者,你也可以使用下面的代码,它更类似于你所拥有的,尽管你需要显式地初始化每一行:

int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
  multD[i] = new int[10];
}

您可以按照其他人提到的方法创建它们。还有一点需要补充:你甚至可以用每一行创建一个倾斜的二维数组,不一定有相同数量的列,就像这样:

int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];

我们可以声明一个二维数组,并在声明时直接将元素存储为:

int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};

这里int表示存储在数组中的整型元素,数组名称为'marks'。Int是括号“{”和“}”内表示的所有元素的数据类型,因为数组是具有相同数据类型的元素的集合。

回到上面写的语句:每一行元素都应该写在花括号内。行和每行中的元素应该用逗号分隔。

现在观察语句:您可以得到3行5列,因此JVM创建了3 * 5 = 15个内存块。这些块可以分别称为:

marks[0][0]  marks[0][1]  marks[0][2]  marks[0][3]  marks[0][4]
marks[1][0]  marks[1][1]  marks[1][2]  marks[1][3]  marks[1][4]
marks[2][0]  marks[2][1]  marks[2][2]  marks[2][3]  marks[2][4]

注意: 如果要存储n个元素,则数组下标从0开始,到n-1结束。 创建二维数组的另一种方法是先声明数组,然后使用new操作符为它分配内存。

int marks[][];           // declare marks array
marks = new int[3][5];   // allocate memory for storing 15 elements

将上述两者结合起来,我们可以得到:

int marks[][] = new int[3][5];

试试这个方法:

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

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