杨辉三角
二维数组的应用:杨辉三角形
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
分析:
1)行数和列数:都是6 ----->数据可以采用键盘录入!
二维数组的定义格式:
格式1:int[][] arr = new int[num][num] ;
2)任何一行的第一列和最后一列都是1
3)从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和
键盘录入一个数据:使用二维数组初始化
外层循环:行数
内层循环:列数
int[][] arr = new int[n][n] ;
给二维数组中的数据赋值(给任何的一列和最后一列赋值) .将定义二维数组遍历
for(int x =0 ; x < arr.length ; x ++){
任何一行的第一列和最后一列都是1
}
再次遍历二维数组
从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和
注:要符合99乘法表的格式!
例:
//导包
import java.util.Scanner ;
class Array2Test{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并接收数据
System.out.println("请您输入一个数据:") ;
int n = sc.nextInt() ;
//定义二维数组,动态初始化
int[][] arr = new int[n][n] ;
//给二维数组中的数据赋值(给任何的一列和最后一列赋值)
//将定义二维数组遍历
for(int x = 0 ; x < arr.length ; x ++){
//赋值
//任何的一列和最后一列都是1
arr[x][0] = 1 ;
arr[x][x] = 1 ;
}
//第三行开始遍历
//从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和
for(int x = 2 ;x < arr.length ; x ++){
//内层循环
/*
y从1开始, 当前任何一行的第一列已经赋值1
y<=x-1 : 最后一列也赋值为1
*/
for(int y = 1 ; y <=x -1; 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 < arr[x].length ; y ++){
System.out.print(arr[x][y] +"\t") ;
}
System.out.println() ;
}
*/
//跟99乘法表规律:y的角标值 y<=x 的值
for(int x = 0 ; x < arr.length ; x ++){
for(int y = 0 ; y <=x ; y ++){ //x = 0 (第一行), y=0(第一列) ,y<=1(0,1)
System.out.print(arr[x][y] +"\t") ; //arr[0][0] arr[1][1]
}
System.out.println() ;
}
}
}