郑州轻工业大学-程序设计技术(Java)-PTA实验1(7-5)-打印杨辉三角

题目及代码示例


import java.util.Scanner;
class Main{
    public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int i = 0;
    int j = 0;
    int[][] yanghui=new int[n][n];
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            if(j==0 || j==i){
                yanghui[i][j]=1;
                }else{
                yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];
                }
            }
        }
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            System.out.printf("%-4d",yanghui[i][j]);
            }
            System.out.println();
        }
    }
}

最简单易懂的新手须知

本段代码知识点在于对for循环的应用以及二维数组的使用,同时将if/else语句嵌套在for循环中,并且在输出阶段对格式进行了规范,以下是详解:

1.for循环

在Java语言中,有三种循环语句,分别是for语句,while语句以及do-while语句,其中for语句的使用在代码编写的过程中最为常见。

语法格式:for(表达式1;表达式2;表达式3)

                {

                        语句;

                }

表达式1:给循环变量初始值

表达式2:给出循环条件

                (当表达式2的值为"真(true)"时,执行循环体,再执行表达式3改变变量的值)

                (当表达式2的值为"假(false)"时,跳出for循环,执行for循环后面的语句)

表达式3:给出循环变化的规律

例子:

int i=0;
for(i=0;i<10;i++)
{
    System.out.println("%d",i);
}

在这个for循环中,i=0是初始条件,i<10是判断条件,当i的大小满足这个条件时,执行for循环,即执行一次,i就加1,直到i=10时,不符合表达式2的条件,跳出循环,因此,运行结果如下:

0
1
2
3
4
5
6
7
8
9

上面是一个for循环的例子,在日常写代码时,我们常常会用到for循环的嵌套使用,就如实例代码中的一段:

for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            System.out.printf("%-4d",yanghui[i][j]);
            }
            System.out.println();
        }

在本段代码中我们使用了for循环的嵌套(注:i和j在整体代码开始时已被定义为整型int,n为杨辉三角的行数),下面我将对循环顺序作简短解释:

第一次循环:i=0,j=0,打印yanghui[0][0]的值,j+1,此时i=0,j=1,不满足j<=i,则跳出第二层循环,但此时依旧在第一层循环中,因此执行System.out.println();进行换行操作,至此,第一层for循环也结束了,i+1,进入第二次循环。

第二次循环:i=1,j=0,打印yanghui[1][0]的值,j+1,此时i=1,j=1,依旧满足j<=i,则再次进行第二层循环,打印yanghui[1][1]的值,j+1,此时i=1,j=2,不满足j<=i,则跳出第二层循环,执行System.out.println();进行换行操作,至此,第一层for循环再次结束了,i+1,进入第三次循环。

以此类推

2.二维数组的使用

在了解二维数组之前,我们需要知道一维数组如何去定义,声明一维数组变量的语法格式有以下两种格式:

数据类型[ ] 数据变量;

数据类型 数据变量[ ];

例:int[ ] a;

       int a[ ];

这两种格式都是正确的,当然,如果我们想声明多个一维数组可以使用一下格式:

例:int[ ] c,d,e;

       int c[ ],d[ ],e[ ];

声明过后,我们需要为数组分配空间,这里要用到new申请数组所需的内存单元,语法格式如下:

数组变量=new 数据类型[长度];

例:a=new int[6];

我们可以把以上两步结合,例如:

int[ ] a=new int[6];

如果我们想获取数组的长度,可以使用以下格式:

数组变量.length

新手须知!!!

int a[3]意为这个一维数组中有三个元素,但第一个元素为a[0],第二个元素为a[1],第三个元素为a[2],记住,没有a[3]!!!

我们可以对新数组赋初值,例如:

int a[4]={1,2,3},其中,第四个元素(a[3])我们没有赋初值,但系统还是会分配一个初值给它,即0,不同的数组类型系统所分配的初值也会不同

数据类型初始化值数据类型初始化值
byte,short,int,long0char'\u0000'
float0.0fbooleanfalse
double0.0引用数据类型null

现在我们开始介绍二维数组

(1)二维数组的声明

        int a[ ][ ];

        a=new int[3][3]; //三行三列的存储单元

        即int a[ ][ ]=new int[3][3];

        也可int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

a[0][0]=1a[0][1]=2a[0][2]=3
a[1][0]=4a[1][1]=5a[1][2]=6
a[2][0]=7a[2][1]=8a[2][2]=9

(2)获取数组的长度

        a.length;//获取二维数组的长度,即二维数组的行数

        a[0].length;//获取一维数组的长度,即二维数组的列数

3.输出格式

当我们想输出一个格式化的数时,可以遵循一下方法:

"%.xf"(x为整数)——输出一个保留x为小数的数值

"%yf"(y为整数)——输出一个宽度为y的数,若长度不足,则补上空格,右对齐,如"%7f"可将1.2格式化为"(四个空格)1.2"

"%-yf"(y为整数)——输出一个宽度为y的数,若长度不足,则补上空格,左对齐,如"%-7f"可将1.2格式化为"1.2(四个空格)"

"%+d":如"%+111"将输出为"+111"

"%,d":如"%,1110000"将输出为"1,110,000"

当组合使用时,如System.out.printf("%-4.1f",0.16);输出为"0.2(一个空格)"

以上就是本题的重要知识点,如果把这些知识点看懂了,那么上面的代码读起来可以说就是易如反掌了!


后言

本博客只是我作为一个Java初学者对目前所学的知识的最浅显的理解,暂时无法用专业语言表达出来,只能依照我自己的理解对学习过程做一个记录,以便以后复习使用,若有大佬路过请多多提出宝贵意见,指出我的错误,当然要是能给一些指导就更好啦(doge)!

  • 65
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值