动态接收“杨辉三角”(直角、等腰三角、正方形)Java版本

 杨辉三角之后,后面就是面向对象,大家要继续加油哦!

 杨辉三角的特点:本质是一个二维数组。 第一列全是1,主对角都是1,其他位置都是有规律的。 

 第三行的2其实是第二行的两个1相加,  以此类推,其他位置也是一样的。

  这个就是杨辉三角的特点第三行的第一列和第二列相加等于第三行的第二列,以此类推。

 来我们看一下代码段

首先我们要知道先干嘛,(1)动态接收(2)写全是1的列与对角线这是一个框架(3)然后for循环进行条件相加,这个代码中有三个版本的杨辉三角。


import java.util.Scanner;

public class demo01_杨辉三角 {
    public static void main(String[] args) {
        动态接收杨辉三角
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入行数:");
        请输入行数,进行动态接收;
        int a =sc.nextInt();
        int[][]arry=new int[a][a];//将所传的行列数,传到二维数组中,

        for (int i = 0; i < arry.length; i++) {
            for (int j = 0; j <= i; j++) {
               if(i==j||j==0) 
        杨辉三角的特点 第一列和行列相等的位置数都唯"1"
               {
                   arry[i][j]=1;
               } else if (i>1) {
        这个位置讲的是从第三行开始 第i行j列等于上一行的第i-1行第j-1列+上一行 j列的数进行相加
                   arry[i][j]=arry[i-1][j-1]+arry[i-1][j];
               }
            }
        }
        矩形版杨辉三角 这是下三角版本的杨辉三角 上三角全是0
            for (int i = 0; i < arry.length; i++) {
                for (int j = 0; j < arry[i].length; j++) {
                    System.out.print(arry[i][j]+"\t");
        这个位置加/"\t"是空格
                }
                System.out.println();
        }

        直角版杨辉三角
            for (int i = 0; i < arry.length ; i++) {
        直角版本的是跟打印九九乘法表一样,只需要另列数小于行数进行循环
               for (int j = 0; j < i; j++) {
                   System.out.print(arry[i][j]+"\t");
            }
               System.out.println();
        }

        等腰三角形版杨辉三角 
        等腰三角形就是要把直角三角形中打印空格而改变三角形
        假如我们定义10行10列,第一行就一个1 9个0 我们要想把1放在中间就需要打印空格
        第二行就是2个1 8个0 其实就是将矩形中的杨辉三角形中用空格挤出一个倒三角形,从而形成等腰 
        三角形
            for (int i = 0; i<arry.length; i++) {
        输出空格 a是传入的行数,i是第几行 空格数要小于行数减去第几行,
        其实就是最后打印出一个倒的直角三角形把位置挤出来
               for (int k = 0; k < a-i; k++){
                 System.out.print("  ");
            }
        输出数字
                for (int j = 0; j <= i; j++) {
                   System.out.format("%4d",arry[i][j]);
        这个是为了让数字占的位数一样 比较美观,不会因位数不一样而变形。
            }
              System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值