例题:Java二维数组打印杨辉三角

        二维数组,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();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波波奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值