← 返回首页
JavaSE系列教程(十三)
发表时间:2019-12-05 13:18:46
讲解Java中如何使用二维数组

所谓二维数组,就是一维数组中的每一个元素是一维数组的数组;

1.二维数组的声明和初始化

1)静态初始化 例如:

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

//遍历二维数组
for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
    System.out.print(arr[i][j]+" ");
    }
    System.out.println();
}

运行结果:
1 2 3 
4 5 6 
7 8 9 

2)动态初始化 例如:

int[][] arr = new int[3][3];

int iCount=1;
//动态初始化
for(int i=0;i<3;i++){
   for(int j=0;j<3;j++){
      arr[i][j] = iCount;
      iCount++;
   }
}

//遍历二维数组
for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
    System.out.print(arr[i][j]+" ");
    }
    System.out.println();
}

运行结果:
1 2 3 
4 5 6 
7 8 9 

2.二维数组综合实例

1)求以下矩阵的对角线元素之和。

实现代码:

int[][] arr = {{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,0}};
int sum =0;

for(int i=0;i<arr.length;i++){

    sum+= arr[i][i]+arr[i][arr.length-1-i];

}

if(arr.length%2!=0){  //奇数行。中间的元素多加了一次。
    sum-= arr[arr.length/2][arr.length/2];
}

System.out.println("对角线元素之和是:" + sum);

运行结果

对角线元素之和是:34

2)求以下矩阵乘积。

实现代码:

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

int[][] result = new int[2][2];

for(int i=0;i<result.length;i++){
    for(int j=0;j<result[i].length;j++){
    int temp =0;
    for(int k=0;k<matrixA[i].length;k++){
       temp += matrixA[i][k]*matrixB[k][j]; //A矩阵的行数对应result的i,B矩阵的列数对应result  j;
    }
    result[i][j] = temp;
    }
}

System.out.println("-------------输出结果-------------");
for(int i=0;i<result.length;i++){
    for(int j=0;j<result[i].length;j++){
    System.out.print(result[i][j]+" ");
    }
    System.out.println();
}