Java 仅使用行数初始化二维数组

Java 仅使用行数初始化二维数组,java,arrays,multidimensional-array,initialization,Java,Arrays,Multidimensional Array,Initialization,因此,如果只声明行数,我对如何在Java中使用2D数组感到有点困惑。 例如: int[]]x=新的int[5][]; 但是你会如何继续填充这5行呢?我认为您需要首先声明每一行的大小,但我想不出一种方法来这样做。如果我尝试做以下事情: x[0][0]=5; 编译器告诉我x[0]为空 非常感谢您的帮助。您试图定义一个2d数组:首先您指定了行的数量,但没有指定列的数量及其必要性 例如,我为第一行定义了两列并指定了值: int[][] x = new int[5][]; x[0] = new int

因此,如果只声明行数,我对如何在Java中使用2D数组感到有点困惑。 例如:

int[]]x=新的int[5][];
但是你会如何继续填充这5行呢?我认为您需要首先声明每一行的大小,但我想不出一种方法来这样做。如果我尝试做以下事情:

x[0][0]=5;
编译器告诉我
x[0]
为空


非常感谢您的帮助。您试图定义一个2d数组:首先您指定了行的数量,但没有指定列的数量及其必要性

例如,我为第一行定义了两列并指定了值:

int[][] x = new int[5][];
x[0] = new int[2];
x[0][0] = 5;
System.out.println(x[0][0]);
为了更好地理解二维阵列,您需要阅读更多内容:


您无法访问
x[0][0]
,因为行
x[0]
中不存在列。 在使用行之前,您需要初始化行中的每一列:

x[0]=新整数[5];
x[1]=新整数[5];
或者使用循环:

for(int i=0;i<5;i++){
x[i]=新整数[5];
}
简单地做:

公共类类名{
公共静态void main(字符串[]args){
//多维数组的赋值
int[][]多数组=新的int[2][3];
//为行“0”和列“0”索引赋值
多数组[0][0]=23;
System.out.println(“我的年龄是:“+multiarray[0][0]);
}
}
int行=5;
int列=12;
int[][]x=新的int[行][];
将所有
行的值初始化为零:

IntStream.range(0,行).forEach(i->{
x[i]=新的int[列];
});
如果要初始化为其他值,例如
-1

IntStream.range(0,行).forEach(i->{
x[i]=新的int[列];
数组填充(x[i],-1);
});

二维数组的元素是一维数组。如果直接定义数组
newint[5][4]
,则每行的长度为
4
,否则可能会有所不同。当您创建一个行长度未定义的二维数组时,它的每个元素(实际上是1d数组)尚未初始化,并且是
null
。当您创建
int[]
的1d数组时,默认情况下,该数组初始化为零。如果直接定义二维数组,则其行的元素将初始化为零

二维阵列的初始化 可以定义不带行长的列长度:

int[]arr=newint[5][];
arr[0]=newint[]{1,2,3};
arr[3]=新整数[2];
arr[3][1]=9;
arr[4]=newint[]{3,3,2,1,6,7};
您可以定义列和行长度:

int[]arr2=新int[3][3];
arr2[0][0]=1;
您可以在创建时定义二维数组的每个元素,也可以选择使用保留行进行进一步操作:

int[][]arr3=新的int[][{{1,2,3},{4,5},{6},null};
// output:
[1, 2, 3]
null
null
[0, 9]
[3, 3, 2, 1, 6, 7]
// output:
[1, 0, 0]
[0, 0, 0]
[0, 0, 0]
// output:
[1, 2, 3]
[4, 5]
[6]
null