欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二维数组

程序员文章站 2022-05-20 10:59:37
...

二维数组

二维数组:数组的数组,二维数组的每一个元素是一个一维数组

int[][] arr = new int[2][5];

定义了一个整型的二维数组,其中包含2个一维数组,每个一维数组可以存储5个整数

           arr[1]  --- 下标为1的位置上的一维数组

           arr[1][3]---获取二维数组的具体元素

/*
 * 二维数组:就是元素为一维数组的一个数组
 * 
 * 格式一:
 * 		数据类型[][]数组名 = new 数据类型[m][n];
 * 		m:表示这个二维数组有多少个一维数组
 * 		n:表示每一个一维数组的元素有多少个
 * 
 * 注意:
 * 	A:以下格式也可以表示二维数组
 * 		a:数据类型 数组名[][] = new 数据类型[m][n];
 * 		b:数据类型[] 数组名[] = new 数据类型[m][n];
 *  B:注意以下定义的区别:
 *      int x,y;      //int变量x,y
 *      int[] x,y[];  //x一维数组,y二维数组
 *      
 */
public class Array2Demo {

	public static void main(String[] args) {
		// 定义一个二维数组
		int[][] arr = new int[3][2];
		//定义了一个二维数组arr,它有3个一维数组的元素
		//每一个一维数组有2个元素
		
		//输出二维数组名称
		System.out.println(arr);   //地址值 [[aaa@qq.com
		//输出二维数组的第一个元素一维数组的名称
		System.out.println(arr[0]);//地址值
		
		System.out.println(arr[1]);//地址值
		//输出二维数组的元素
		System.out.println(arr[0][0]);//0
		System.out.println(arr[0][1]);//0
		
		

	}

}

 

/*
 * 格式二:
 *      格式:
 *      数据类型[][] 数组名 = new 数组类型[m][];
 * 		m:表示这个二维数组有多少个一维数组,
 * 		列数没有给出,可以动态的给,这一次是一个变化的列数
 */
public class Array2Demo2 {

	public static void main(String[] args) {
		// 定义数组
		int[][] arr = new int[3][];
		
		System.out.println(arr);//[[aaa@qq.com
		System.out.println(arr[0]);//null
		System.out.println(arr[1]);//null
		System.out.println(arr[2]);//null
		//动态的为每一个一维数组分配空间
		arr[0] = new int[2];
		arr[1] = new int[3];
		arr[2] = new int[1];
		System.out.println(arr[0]);//[aaa@qq.com
		System.out.println(arr[1]);//aaa@qq.com
		System.out.println(arr[2]);//[aaa@qq.com
		
		System.out.println(arr[0][0]);//0
		System.out.println(arr[0][1]);//0
		//ArrayIndexOutOfBoundsException: 2
		//System.out.println(arr[0][2]);//错误:越界
		
		arr[1][2] = 100;
		System.out.println(arr[1][2]);//100
		
	}

}

 

二维数组

二维数组类型的构成:数据类型[][] ,具体数组的构成:new  int[一维数组的个数][一维数组中元素的个数]

   二维数组的长度:数组名.length 

      每个一维数组:数组名[下标].length

二维数组的遍历---两重for循环

public class Demo1 {
	public static void main(String[] args) {
		//二维数组:
		int a = 4;
		int[] arr = new int[2];//一维数组
		//二维数组类型的构成:数据类型+[]+[] ,具体数组的构成:new  int[一维数组的个数][一维数组中元素的个数]
		int[][] arr1 = new int[2][];//二维数组
	
		//赋值
		int[][] arr2 = {{2,3},{5,6,7}};
		
		//取值
		for(int i=0;i<arr3.length;i++){//遍历的是二维数组
			//遍历一维数组
			for(int j=0;j<arr3[i].length;j++){
				System.out.print(arr3[i][j]+"   ");
			}
			System.out.println();
		}
	}
}
/*
 * 需求:打印杨辉三角形(行数可以键盘录入)
 * 1
 * 1 1
 * 1 2 1
 * 1 3 3  1
 * 1 4 6  4  1
 * 1 5 10 10 5 1
 * 
 * 分析:看这种图形的规律
 * 	a:任何一行的第一列和最后一列都是1
 *  b:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
 *  
 * 步骤:
 * 	A:首先定义一个二维数组,行数如果是n,我们把列数也定义为n;
 * 		这个n的数据来自键盘录入
 * 	B:给这个二维数组任何一行的第一列和最后一列赋值为1
 *  C:按照规律给其他元素赋值
 *  	从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
 *  D:遍历这个二维数组
 */
import java.util.Scanner;

public class Array2Test2 {

	public static void main(String[] args) {
		// 键盘录入
		Scanner sc = new Scanner(System.in);
		System.out.println("n:");
		int n = sc.nextInt();
		
		//定义一个二维数组
		int[][] arr =new int[n][n];
		//给这个二维数组任何一行的第一列和最后一列赋值为1
		for(int x = 0;x<arr.length;x++) {
			arr[x][0] = 1;//任何一行第1列
			arr[x][x] = 1;//任何一行的最后1列
		}
		//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
		for(int x=2;x<arr.length;x++) {
			//所以这里要减去1
			//并且y也应该从1开始,因为第一列也有值了
			for(int y = 1;y<=x;y++) {
				//每一个数据都是它上一行的前一列和它上一行的本列之和
				arr[x][y] = arr[x-1][y-1]+arr[x-1][y];
			}
		}
		//这个时候,内循环的变化必须和九九乘法表类似
		for(int x = 0;x<arr.length;x++) {
			for(int y = 0;y<=x;y++) {
				System.out.print(arr[x][y]+"\t");
			}
			System.out.println();
		}

	}

}

 

相关标签: 二维数组