java—用于创建二维数组的语法

smdncfj3  于 2021-06-30  发布在  Java
关注(0)|答案(12)|浏览(295)

考虑:

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

这就是创建5行10列的二维数组的方法吗?
我在网上看到了这段代码,但语法不通。

mlmc2os5

mlmc2os51#

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;
  }
}

好好享受!

yrwegjxp

yrwegjxp2#

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

int array[] = new int[5];

其中int是数据类型,array[]是数组声明,而 new array 是一个数组,它的对象有五个索引。
这样,您就可以编写一个二维数组,如下所示。

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

在这里 array 是int数据类型。我首先声明了这种类型的一维数组,然后创建了一个3行4列的数组。
在你的代码里

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

意味着您已经创建了一个二维数组,包含五行。第一行有10列。在java中,您可以根据需要为每一行选择列大小。

yxyvkwin

yxyvkwin3#

请尝试以下操作:

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 }
};
ar7v8xwq

ar7v8xwq4#

创建包含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];
}
7y4bm7vi

7y4bm7vi5#

这些类型的数组在java中称为锯齿数组:

int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[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();
}
ecr0jaav

ecr0jaav6#

也可以按以下方式声明。这不是个好设计,但很管用。

int[] twoDimIntArray[] = new int[5][10];
kjthegm6

kjthegm67#

实际上java没有数学意义上的多维数组。java所拥有的只是数组的数组,数组中的每个元素也是一个数组。这就是为什么初始化它的绝对要求是第一维度的大小。如果指定了rest,那么它将创建一个用默认值填充的数组。

int[][]   ar  = new int[2][];
int[][][] ar  = new int[2][][];
int[][]   ar  = new int[2][2]; // 2x2 array with zeros

这也给了我们一个怪癖。子数组的大小不能通过添加更多的元素来改变,但是我们可以通过指定一个任意大小的新数组来实现。

int[][]   ar  = new int[2][2];
ar[1][3] = 10; // index out of bound
ar[1]    = new int[] {1,2,3,4,5,6}; // works
qxsslcnc

qxsslcnc8#

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

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个元素,那么数组索引从零开始,到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];
yr9zkbsy

yr9zkbsy9#

请这样做:

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

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

hts6caw310#

尝试:

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

请注意,在您的代码中,只有2d数组的第一行被初始化为0。第二行到第五行根本不存在。如果你想把它们印出来 null 对他们每个人来说。

6fe3ivhb

6fe3ivhb11#

你可以按照别人提到的方式创建它们。还有一点需要补充:您甚至可以用每一行创建一个倾斜的二维数组,不一定有相同数量的collumn,如下所示:

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

ugmeyewa12#

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

相关问题