1.二维数组的初始化
二维数组的实质:一维数组的数组。 先创建一维数组,再在一维数组中存储一维数组的引用变量。
①二维数组的初始化格式1:
数据类型[ ][ ] 变量名 = new 数据类型[m][n];
m代表二维数组中一维数组的个数;
n代表二维数组中包含的每个一维数组,所能包含的元素个数.
例如:
int[][] arr = new int[3][2] ;
②二维数组的初始化格式2:
数据类型[ ][ ] 变量名 = new 数据类型[m][ ];
m表示这个二维数组有多少个一维数组;
这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[2][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
注意:这种方式从存储角度讲更加灵活!
③二维数组的初始化格式3:
数据类型[ ][ ] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:
数据类型[ ][ ] 变量名 = {{元素…},{元素…},{元素…}};
例:
int[][] arr = {{9,6,3,5},{1,5,8},{2,5}};
注意:
简化版只能在定义数组的引用变量时使用!
2.二维数组的遍历
public static void print(int[][] arr){
for (int i = 0; i < arr.length ; i++) {
for (int j = 0; j < arr[i].length ; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
注意:二维数组的length表示存储一维数组的个数。
3.补充
1.打印杨辉三角:
package com.codeInClass.TwoDimensionalArray;
import com.publicMethod.PrintTwoDemisionArray;
import java.util.Scanner;
/*
* 打印杨辉三角:
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
* */
public class triangleYangHui {
//打印杨辉三角形(行数可以键盘录入)
public static int[][] printTriangle(int n){
int[][] result;//存储杨辉三角内容
//当n=1时直接输出
if(n == 1){
result=new int[][]{{1}};
return result;
}
//当n=2时直接输出
if(n == 2){
result=new int[][]{{1},{1,1}};
return result;
}
//当n>3时
result=new int[n][];
result[0]=new int[]{1};
result[1]=new int[]{1,1};
for(int i = 2;i < n;i++){
result[i]=new int[i+1];//开辟二维数组
result[i][0] = 1;//每一行第一个元素值为1
result[i][i] = 1;//每一行最后一个元素值也为1
for (int j = 1; j < i; j++) {
//第i行第j列的值 = 第i - 1行第j列值 + 第i - 1行第j - 1列
result[i][j] = result[i-1][j-1]+result[i-1][j];
}
}
return result;
}
public static void main(String[] args) {
System.out.println("输入正整数n:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
//自己写的打印二维数组公共方法
PrintTwoDemisionArray.print(printTriangle(n));
}
}
2.输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。
package com.codeAfterClass.day07;
import com.codeInClass.PrintTwoDemisionArray;
/*
* 输入一个 m*n的矩阵 和一个n*p的矩阵,并初始化, 要求打印出两个矩阵的乘积。
* */
public class MatrixMultiplication {
//矩阵相乘
public static int[][] multiplication(int[][] arr1,int[][] arr2){
//结果矩阵
int[][] result = new int[arr1.length][arr2[0].length];
for (int i = 0; i < arr1.length ; i++) {
for (int j = 0; j < arr2[0].length; j++) {
for (int k = 0; k < arr1[0].length; k++) {
result[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return result;
}
public static void main(String[] args) {
//4x5矩阵
int[][] arr1 = new int[][]{{1,8,5,9,3},{0,5,8,9,2},{7,4,4,5,0},{1,3,5,8,9}};
//5x6矩阵
int[][] arr2 = new int[][]{{9,8,7,4,1,4},{7,8,9,5,6,2},{7,4,5,6,9,2},{3,6,9,8,5,4},{11,2,54,3,9,5}};
//矩阵相乘内标要相同
if(arr1[0].length != arr2.length){
System.out.println("这两个矩阵无法相乘!");
}else{
//PrintTwoDemisionArray.print()为自己写的打印二维数组公共方法
System.out.println("矩阵1:");
PrintTwoDemisionArray.print(arr1);
System.out.println("矩阵2:");
PrintTwoDemisionArray.print(arr2);
System.out.println("矩阵相乘结果:");
PrintTwoDemisionArray.print(multiplication(arr1,arr2));
}
}
}
3.定义一个三维数组,并初始化之。
写一个打印函数,负责打印三维数组中的数据,并测试。
package com.codeAfterClass.day07;
/*
* 定义一个三维数组,并初始化之。
写一个打印函数,负责打印三维数组中的数据,并测试
* */
public class PrintThreeDimensionArray {
//打印三维数组
public static void print(int[][][] arr){
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j <arr[i].length ; j++) {
for (int k = 0; k < arr[i][j].length; k++) {
System.out.print(arr[i][j][k]+" ");
}
System.out.println();
}
System.out.println();
}
}
public static void main(String[] args) {
int[][][] threeDArray = new int[2][3][4];
print(threeDArray);
}
}