二维数组,for循环
import java.util.Scanner;
/**
* 1
* 1 1
* 1 2 1
* 1 3 3 1
*/
public class Demo7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
/*
杨辉三角可以看出来第一行一个数
第二行两个,第三行三个,所以创建一个
二维数组,给他的行列都赋值上n。
*/
int sanJiao[][] = new int[n][n];
/*
* 杨辉三角每一行的第一个和最后一个数字都为1
* 所以使用一个for循环能够一行一行的遍历,
* 给每一行的第一个(sanJiaop[i][0])
* 和每一行的最后一个(sanJiao[i][i])
* 都赋值为1*/
for (int i = 0; i < sanJiao.length; i++) {
sanJiao[i][0] = 1;
sanJiao[i][i] = 1;
}
/*
既然现在已经解决的行数列数的问题,以及每一行的第一个和最后一个
的问题了 ,脑海中可以想到杨辉三角的大致轮廓有了
可以看到,它从第三行开始中间的数等于上一行对应的这个数和它前面一个数的和
举个栗子:可以看到第四行的第二个数‘3’ 上一列和他对应的数是‘2’
‘2’前面的那个数是‘1’所以不难得出这个规律
就是假如在i行j列有个数sanJiao[i][j],
则这个数的值为 sanJiao[i][j]=sanJiao[i-1][j-1]+sanJiao[i-1][j]
ok
解析来用双重for循环,i代表行,j代表列,因为从第三行开始所以i=2
注意!因为数组是从0开始的,不要忘了哈,所以这里的i=2代表的第三行
列数因为不用考虑第一个最后一个,所以取值从1到i-1
*/
for (int i = 2; i < sanJiao.length; i++) {
for (int j = 1; j <= i - 1; j++) {
sanJiao[i][j] = sanJiao[i - 1][j - 1] + sanJiao[i - 1][j];
}
}
/*
* 这里是来打印出来的,关于怎么打印就不细讲了,有哪里不懂的随时可留言*/
for (int i = 0; i < sanJiao.length; i++) {
for (int j = n - i; j > 0; j--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print(sanJiao[i][j] + " ");
}
System.out.println();
}
}
}