二维数组的练习(杨辉三角)

练习一:

获取arr数组中所有元素的和。提示:使用for循环的嵌套循环,遍历即可
在这里插入图片描述

public class Test {
	
	public static void main(String[] args) {
		int[][] arr = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
		
		int sum = 0;//记录总和,开始遍历
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				sum += arr[i][j];
			}
		}
		
		System.out.println("总和为:" + sum);
	}
	
}

练习二

声明:int[]x,y[];在给x,y变量赋值以后,以下选项允许通过编译的是:(提示:
一维数组:int[] x或者intx[]
二维数组:int[][] y或者int[] y[]或者inty[][])

  • a)  x[0] =y; 
    
  • b) y[0] =x;
    
  • c) y[0][0]= x;
    
  • d) x[0][0]= y;
    
  • e) y[0][0] =x[0];
    
  • f)   x = y;
    

解决这个问题我们要先来明确x,y是什么类型的变量
x是int型的一维数组或者 叫一维数组,元素是int型的
y是int型的二维数组
考察点一:
先确定x、y的类型。
原先我们说过定义x,y是这样的int x;int y;。若类型一样则可以写成int x,y;(合并起来定义)
如果在前面加一个[] ,int [] x,y;则x,y都为一维数组
但现在结构为int [] x,y [] ;这个结构即为int[] x;与int[] y[];拼在了一起。
所以现在的y是一个二维数组。
考察点二
类型和类型之间变量赋值的规则,要么是同个类型,要么是满足自动类型的提升
答案:
a) x[0] =y; 错误 。 y为二维数组,x[0]连一维数组都不算,只是一个int 的一个数
b) y[0] =x; 正确 。 x是一维,y[0]是二维中的一个元素,是一维的。
c) y[0][0]= x; 错误。 x是一维的,y[0][0]是int型的一个数
d) x[0][0]= y;错误。 写法都错了 x[0][0],一维数组不能这样写
e) y[0][0] =x[0]; 正确。 两边都是int型的一个数
f) x = y; 错误。 y是二维的,x是一维的

练习三:

 使用二维数组打印一个10行杨辉三角。

【提示】
1、第一行有1个元素,第n行有n个元素
2、每一行的第一个元素和最后一个元素都是1
3、从第三行开始,对于非第一个元素和最后一个元素的元素。即:
yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
在这里插入图片描述

三步骤:
1.声明并初始化二维数组
2.给数组的元素赋值
3.遍历二维数组

public class YangHuiTest {
	
	public static void main(String[] args) {
		//1.声明并初始化二维数组,应该用动态初始化
		int[][] yangHui = new int[10][];//后面的空格中不能写,因为每行的列不一样。
		
		//2.给数组的元素赋值
		for(int i = 0;i < yangHui.length;i++){
			yangHui[i] = new int[i + 1];
			
			//2.1 给首末元素赋值
			yangHui[i][0] = 1;
			yangHui[i][i] = 1;
			//上面两行可以合并为yangHui[i][0] = yangHui[i][i] = 1;
			
			//2.2 给每行的非首末元素赋值
			//if(i > 1){if可以不写,因为如果i=1时,
						//下面的for中yangHui[i].length - 1结果为0,无法进入循环。所以可以省略
			for(int j = 1;j < yangHui[i].length - 1;j++){
				yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
			}
			//}
		}
		
		
		//3.遍历二维数组
		for(int i = 0;i < yangHui.length;i++){
			for(int j = 0;j < yangHui[i].length;j++){
				System.out.print(yangHui[i][j] + "  ");
			}
			System.out.println();
		}
		
		
		
	}
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值