Java-10 二维数组
二维数组:二维数组其实就是一个元素为一维数组的数组
一、定义格式:
格式1 数据类型[][] 变量名 = new 数据类型[m][n];
public static void main(String[] args) { //定义一个二维数组 int[][] arr = new int[3][2]; //定义一个二维数组arr //3代表的是arr有三个元素,每个元素都是一个一维数组 //2代表的是每个一维数组有两个元素 //输出二维数组的名字和元素 System.out.println(arr); // [[I@4554617c //把第一个元素的地址获取到 System.out.println(arr[0]); //[I@74a14482 //把第二个元素的地址获取到 System.out.println(arr[1]); //[I@1540e19d //把第三个元素的地址获取到 System.out.println(arr[2]); //[I@677327b6 //输出二维数组中第2个一维数组的所有元素 System.out.println(arr[1][0]); System.out.println(arr[1][1]); // System.out.println(arr[1][2]); // System.out.println(arr[3][0]); }
格式2 数据类型[][] 变量名 = new 数据类型[m][]; m表示这个二维数组有多少个一维数组 这一次没有直接给出一维数组的元素个数,可以动态的给出。
public static void main(String[] args) { int[][] arr = new int[3][]; System.out.println(arr[0]); //null System.out.println(arr[1]); //null System.out.println(arr[2]); //null System.out.println("============================"); //动态地为二维数组中每一个一维数组分配空间 arr[0] = new int[2]; arr[1] = new int[3]; arr[2] = new int[4]; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //输出二维数组中第2个一维数组的所有元素 System.out.println(arr[1][0]);// 0 System.out.println(arr[1][1]); }
格式3 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
public static void main(String[] args) { //定义一个二维数组 int[][] arr = new int[][]{{11, 22, 33}, {44, 55}, {66, 77, 88, 99}}; // int[][] arr1 = new int[3][2]{{11, 22}, {44, 55}, {66, 77}}; System.out.println(arr); //二维数组的地址值 System.out.println(arr[0]); //二维数组的第一个元素,一维数组的地址值 System.out.println(arr[1]); //二维数组的第二个元素,一维数组的地址值 System.out.println(arr[2]); //二维数组的第三个元素,一维数组的地址值 System.out.println(arr[0][0]); //打印的是第 1 个一维数组中的第 1 个元素值 System.out.println(arr[0][1]); //打印的是第 1 个一维数组中的第 2 个元素值 System.out.println(arr[0][2]); //打印的是第 1 个一维数组中的第 3 个元素值 System.out.println(arr[1][0]); //打印的是第 2 个一维数组中的第 1 个元素值 System.out.println(arr[1][1]); //打印的是第 2 个一维数组中的第 2 个元素值 System.out.println(arr[2][0]); //打印的是第 3 个一维数组中的第 1 个元素值 System.out.println(arr[2][1]); //打印的是第 3 个一维数组中的第 2 个元素值 System.out.println(arr[2][2]); //打印的是第 3 个一维数组中的第 3 个元素值 System.out.println(arr[2][3]); //打印的是第 3 个一维数组中的第 4 个元素值 }
二、二维数组遍历
int[][] arr1 = new int[][]{{1, 5, 7, 2}, {5, 4, 8, 6}, {4, 5, 878, 4}}; for (int i = 0; i < arr1.length; i++){ for (int j =0;j<arr1[i].length;j++){ System.out.print(arr1[i][j]+"\t"); } System.out.println(); }
三、二维数组练习题
/* 杨辉三角(行数是我们手动指定的) 1 {1} {{1},{1,1},{1,2,1},{1,3,3,1},...} 11 {1,1} 121 {1,2,1} 1331 {1,3,3,1} 14641 15101051 ... 分析: 1、任何一行的第一列和最后一列都是1 2、从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和 实现步骤: 1、首先定义一个二维数组,行数是n,列数我们也定义为n 2、给这个二维数组任何一行的第一列和最后一列赋值1 3、按照我们发现的规律去给其他元素赋值 从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和 4、遍历这个二维数组 */ import java.util.Scanner; public class ArrayDemo9 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入你想要的杨辉三角的行数:"); int n = sc.nextInt(); //{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}} int[][] arr = new int[n][n]; //给这个二维数组任何一行的第一列和最后一列赋值1 for(int i = 0;i<arr.length;i++){ arr[i][0] = 1; arr[i][i] = 1; } //按照我们发现的规律去给其他元素赋值 //从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和 for(int i=2;i<arr.length;i++){ //注意:到这里我们每一行的第一列和最后一列都赋值1 //所以,我们只需要处理每一行其他的元素就可以了 //每一行从第二列开始处理,一直到每一行的倒数第二列 //也就是索引从1开始到length-2 for(int j=1;j<arr[i].length-1;j++){ //每一列的数据是上一行的前一列与上一行的本列之和 arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; } } //遍历这个二维数组 // for(int i=0;i<arr.length;i++){ // for(int j=0;j<arr[i].length;j++){ // System.out.print(arr[i][j]+"\t"); // } // System.out.println(); // } for(int i=0;i<arr.length;i++){ for(int j=0;j<=i;j++){ System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }