Java二维数组,行列交换、杨辉三角

二维数组

声明与创建

// 声明一个二维数组
int[][] array ;
// 创建一个二维数组 长度为5
array = new int[5][];
// 数组套数组,未定义二层 。默认为null
System.out.println(ArrayUtils.toString(array));
// {<null>,<null>,<null>,<null>,<null>}


array = new int[5][4];
System.out.println(ArrayUtils.toString(array));
// {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}

// 声明与创建同时进行,与一维数组格式基本相同
int[][] array2 = new int[4][3];
System.out.println(ArrayUtils.toString(array2));
// {{0,0,0},{0,0,0},{0,0,0},{0,0,0}}

int[][] array3 = new int[][]{{1,2},{3,4},{5,6},{7,8}};
System.out.println(ArrayUtils.toString(array3));
// {{1,2},{3,4},{5,6},{7,8}}

int[][] array4 = {{1,2},{3,4},{5,6},{7,8}};
System.out.println(ArrayUtils.toString(array4));
// {{1,2},{3,4},{5,6},{7,8}}

二维数组经典案例 - 行列交换

// 定义一个 4行3列的二维数组
int[][] array = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
// 转换行列实现一个新的二维数组
// 声明转换后的 二维数组长度
int[][] newarray = new int[3][4];
// 外层for循环控制行,内层for循环控制列
for (int i = 0; i < array.length; i++) {
	for (int j = 0 ; j < array[i].length; j++){
		// 分析前后位置变化,得出行列交换即可
		newarray[j][i] = array[i][j];
	}
}
// 打印二维数组 内容
System.out.println(ArrayUtils.toString(newarray));
// {{1,4,7,10},{2,5,8,11},{3,6,9,12}}

二维数组经典案例 - 杨辉三角

杨辉三角

在这里插入图片描述

  • 第 n 行 有 n 个 项 , i 代表 行
    1. 起始值 和 结束值 都是 1
    2. 第 j 项 ( j !=0 && j!=i), j = [i-1][j-1] + [i-1][j]

打印 前10行的杨辉三角

// 创建一个长度为 10 的二维数组
int[][] array = new int[10][];
// 循环每一行,对每一行进行个数控制
for (int i = 0; i < array.length; i++) {
	// 第 i 行 ,i + 1 个元素
	int[] arr = new int[i + 1];
	for (int j = 0; j < arr.length; j++) {
		// 首尾都为1
		if(j == 0 || j == i) arr[j] = 1;
		// 除了首尾部,其他位置均为 上一行的前一项 + 上一行的当前项
		else arr[j] = array[i - 1 ][j - 1] + array[i - 1][j];
	}
	// 将每行的数据进行赋值
	array[i] = arr;
}
//System.out.println(ArrayUtils.toString(array));

for (int i = 0; i < array.length; i++) {
	for (int j = 0; j < array[i].length; j++) {
		System.out.print(array[i][j]+"\t");
	}
	System.out.println();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值