【Java】 杨辉三角 二维数组打印杨辉三角

本文介绍了一种使用Java实现杨辉三角打印的方法,并详细解释了如何通过二维数组存储杨辉三角的数值,同时展示了完整的代码示例。

Tips

打印三角的操作 :

  1. 每行打印前预留空格
  2. 打印指定数量的星号后换行
  3. 重复循环打印直至完成所有打印结果

杨辉三角:

  1. 三角规律空格最大对称值为 5 大于 5 则会变形
  2. 三角规律为当前值为上一个值加上前一个值 首尾的数字值相等
  3. 参考二维数组的规律生成数值
import java.util.Scanner;

/**
 * Created Wenyu.
 *
 * @author caicaiwoshishei>...
 * @createTime 2022-11-07 19:06
 * @Describe [打印杨辉三角]
 * 1  通过二维数组存储值
 * 1 1
 * 1 2 1
 * 1 3 3 1
 * 1 4 6 4 1
 * 1 5 10 10 5 1
 * 理想打印效果       基础里边界1space
 *        1          7space 6
 *       1 1         6space 5
 *      1 2 1        5space 4
 *     1 3 3 1       4space 3
 *    1 4 6 4 1      3space 2
 *   1 5 10 10 5 1   2space 1
 * @since 1.0
 */
public class PascalTriangles {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入需要打印的行数:");
        int inputNumberVal = 0;
        try {
            inputNumberVal = scanner.nextInt();
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
        printTriangle(inputNumberVal);
    }

    public static void  printTriangle(int endNumberVal){
        /**
         * 打印三角的操作 :
         * 1) 每行打印前预留空格
         * 2) 打印指定数量的星号后换行
         * 3) 重复循环打印直至完成所有打印结果
         *
         * 杨辉三角:
         *  1) 三角规律空格最大对称值为 5 大于 5 则会变形
         *  2) 三角规律为当前值为上一个值加上前一个值 首尾的数字值相等
         *  3) 参考二维数组的规律生成数值
         */
        Integer [][] triangleArrList = new Integer[endNumberVal][endNumberVal];
        for (int begin_num = 0; begin_num < endNumberVal; begin_num ++){
            //通过二维数组生成每一行的数值
            for (int save_index = 0; save_index <= begin_num; save_index ++){
                if (save_index != begin_num && save_index != 0 && begin_num > 0 && save_index > 0){
                    triangleArrList[begin_num][save_index] = triangleArrList[begin_num - 1][save_index] + triangleArrList[begin_num - 1][save_index - 1];
                }else {
                    triangleArrList[begin_num][save_index] = 1;
                }
            }
            //打印输入当前行数的二维数组的内容
            for (int print_index = endNumberVal-1; print_index >= 0;print_index --){
                if (triangleArrList[begin_num][print_index] != null && triangleArrList[begin_num][print_index] != 0){
                    System.out.print(triangleArrList[begin_num][print_index]+" ");
                }else {
                    System.out.print(" ");
                }
            }
            //换行
            System.out.println();
        }
        System.out.println("二维数组存储数值情况如下:");
        for (Integer[] integers : triangleArrList) {
            for (Integer integer : integers) {
                System.out.print(integer+ " ");
            }
            System.out.println();
        }

    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值