小白初试杨辉三角

一些话

我是栀芷,是一个在读的java小白,这是我的第一篇博客,希望成为我写博客习惯的起点,大家也不要太嫌弃啦。今天也是看一个朋友发表文章才兴起写一下博客,很感谢这个偶然,加油。

杨辉三角

言归正传,今天我写的也是杨辉三角,让我们一步一步来看看吧。

得到杨辉三角

首先,我们要从控制台输入一个数,作为杨辉三角的行数.

       Scanner sc = new Scanner(System.in);
       System.out.println("请输入想要打印的行数");
       int n = sc.nextInt();

第二步,我们写一个getTriangle()函数来得到杨辉三角的每个元素。由于杨辉三角,每行元素的个数等于它的行数,于是我们用for循环来创建一个二维数组,先把两端的位置填入1,按照下面的数等于上面两个数之和的规律1,我们可以计算出中间元素的值,再填入。

public static int[][] getTriangle(int n) {
        int[][] array = new int[n][n];
        for (int i = 0; i < array.length; i++) {
            array[i][0] = array[i][i] = 1;
            if (i > 1) {
                for (int j = 1; j < array[i].length - 1; j++) {
                    array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
                }
            }
        }
        return array;
    }

输出杨辉三角

第三步,为了杨辉三角对称的输出且成金字塔形,我们首先想到的是用空格输出来得到想要的结果。
最开始直接用两个和一个空格嵌套使用输出,对于10以内的看不出明显的问题,但对于10以后,中间数的位数多了,导致空格后移,后面的数不再能保持格式。
我们就想到了先计算最大的数的位数,然后来匹配空格的长度,避免数字过长,空格过多的情况。

public static void show(int[][] array) {
        int row;
        row = array.length;
        String space1 = "";
        String max = String.valueOf(array[row - 1][row / 2]);//可以最大数的长度
        for (int m = 0; m < max.length(); m++) { //得到最大数相应的空格长度
            space1 += " ";
        }
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < row - 1 - i; j++) { //先打印好杨辉三角左边的空格
                System.out.print(space1 + " ");
            }
            for (int j = 0; j <= i; j++) {//再打印数字之间的空格
                String space2 = "";
                String num = String.valueOf(array[i][j]);//可以得到当前的数字的长度
                for (int a = 0; a <= (max.length() - num.length()); a++) {
                    //得到当前数字对应空格的长度,比最大数短多少,就补多少空格
                    space2 += " ";
                }
                System.out.print(array[i][j] + space1 + space2 + " ");
            }
            System.out.println();
        }
    }

主函数

直接在类中调用**getTriangle()函数和show()**函数,输出想要的结果。

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入想要打印的行数");
        int n = sc.nextInt();
        show(getTriangle(n));
    }

运行图

在这里插入图片描述
拜拜下次见。emmmm代码还有很多不规范的地方,还有注释的质量会慢慢改正和提高的。


  1. 杨辉三角的规律的话,建议度娘哦,我这里解释起来也太冗余啦,见谅。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值