创build二维数组的语法

考虑:

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

这是如何创build一个5行10列的二维数组?

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

尝试以下操作:

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

…这是这样一个简短的手:

 int[][] multi = new int[5][]; multi[0] = new int[10]; multi[1] = new int[10]; multi[2] = new int[10]; multi[3] = new int[10]; multi[4] = new int[10]; 

请注意,每个元素将被初始化为int的默认值0 ,所以上面的内容也相当于:

 int[][] multi = new int[][]{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; 

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

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

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

回到我们上面写的说明:每行元素应该写在大括号内。 每行中的行和元素应该用逗号分隔。

现在观察语句:你可以得到3行5列,所以JVM创build3 * 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个元素,则数组索引从零开始并在n-1结束。 创build二维数组的另一种方法是首先声明数组,然后使用new运算符为其分配内存。

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

通过结合以上两点,我们可以写出:

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

您可以按照其他人提到的方式创build它们。 还有一点需要补充:甚至可以在每一行创build一个倾斜的二维数组,而不一定具有相同数量的collumns,如下所示:

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

创build一个510列的二维数组最常见的用法是:

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

或者,您可以使用以下内容,与您的内容更为相似,但需要明确初始化每行:

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

尝试:

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

请注意,在您的代码中,只有2D数组的第一行被初始化为0.第2行到第5行不存在。 如果你试图打印他们,你会得到null为他们每个人。

在Java中,可以将二维数组声明为与一维数组相同。 在一维数组中,你可以像写一样

  int array[] = new int[5]; 

其中int是一个数据types,array []是一个数组声明,而new array是一个数组,其对象有五个索引。

像那样,你可以写下如下的二维数组。

  int array[][]; array = new int[3][4]; 

这里的array是一个int数据types。 我首先在这个types的一维数组上声明,然后创build一个3行和4列的数组。

在你的代码中

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

意味着您已经创build了一个具有五行的二维数组。 在第一行中有10列。 在Java中,您可以根据需要为每一行select列大小。

 int [][] twoDim = new int [5][5]; int a = (twoDim.length);//5 int b = (twoDim[0].length);//5 for(int i = 0; i < a; i++){ // 1 2 3 4 5 for(int j = 0; j <b; j++) { // 1 2 3 4 5 int x = (i+1)*(j+1); twoDim[i][j] = x; if (x<10) { System.out.print(" " + x + " "); } else { System.out.print(x + " "); } }//end of for J System.out.println(); }//end of for i 

也可以用下面的方式声明它。 这不是好的devise,但它的工作原理。

 int[] twoDimIntArray[] = new int[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; } } 

请享用!

尝试这种方式:

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

Java中称为Jagged Array的这些types的数组:

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

在这种情况下,数组的每一行都包含不同的不同列号。 在上面的例子中,第一行将保存3列,第二行保存2列,第三行保存5列。 你可以在编译时初始化这个数组,像下面这样:

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

您可以轻松地迭代您的数组中的所有元素:

 for(int i = 0; i<multD.length; i++){ for(int j = 0; j<multD[i].length;j++){ System.out.print(multD[i][j]+"\t"); } System.out.println(); }