java入门---打印图形实例之打印三角形

    首先,确定我们的输出结果是:


    那么我们怎么才能做到这样呢?首先分析图形的结构。我们可以看到,图形共5行,那么,我们是否可以建立一个for循环语句,使其控制在5行?答案是肯定的。

for(int i = 1 ;i <= 5 ;i++ ){

}

    这样,我们就建立了一个循环5次的for循环代码块,为最外圈的循环。然后,分析图形是怎样构成的,我们可以把图形拆分为以下几部分:

   

    我们可以把图形拆分为这样三个三角形。然后来建立1号空白三角形。可以看,第一行是输出4个空格,第二行输出3个空格,第三行输出2个,第四行输出1个,第五行没有。从这个规律可以看出,是依次递减的规律,那么如何实现呢?

    我们可以想象从1到5,中间有四个数字;从2到5中间有3个数字,从3到5……。是不是可以利用这个原理呢?答案是当然的。那么如何实现?请看代码:

for(int i = 1;i<=5 ;i++) {
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    System.out.println();
}

    第一个for语句就是刚才定义的五次循环语句。第二个for循环,我们来进行解析下。首先 定义一个int类型的j变量,给j赋值为5。然后我们想,既然要缩短距离,那么每次循环j就-1,那么刚好符合我们的要求,第一次大循环 i=1,j=5, 所以符合j>=i的条件然后输出一个空格,然后j-1,现在j的值为4符合j>=i,再输出。。。。。

    一直到j=0,j>=i不符合,跳出内循环。现在到System.out.println(); 换行。现在回到外循环 i++ ,i变成2,符合i<=5,进入内循环。定义j=5 , j>=i,符合,输出一个空格,j-1。j现在为4 ,j>=i,符合,输出一个空额,j-1。。。。。。

    一直到j=1,j>=i,不成立,跳出内训还,然后换行。然后i+1 然后再进入内循环……。如此循环下去 形成了一个四行的倒三角,1号图案形成。然后就来建立2号图形,和1号图形原理完全相同,不过正好相反:

for(int i = 1 ;i<=5 ;i++){
    for(int j = 5; j >= i ; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    System.out.println();
}

    如建立1号图形相同,大家可以自己理解,如此2号建立。再来建立3号图形:

for(int i = 1; i <= 5; i++){
    for(int j = 5 ;i <= j; j--)//建立1号图形
        System.out.print(" ");
    for(int j = 1; j <= i; j++)//建立2号图形
        System.out.print("*");
    for(int j = 1; j < i; j ++)//建立3号图形
        System.out.print("*");

}

    同样,如同1号二号相同,建立3号图形原理相同。但是大家注意一点,3号图形没有在第一行输出,所以要在第一次大循环中掐断它,让它在第二次大循环中输出,所以 这次的判断条件为 j < i 去掉了等于:

class Demo{
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            for(int j=5; i<=j; j--)
                System.out.print(" ");
            for(int j=1; j<=i; j++)
                System.out.print("*");
            for(int j=1; j<i; j++)
                System.out.print("*");
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luyaran

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

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

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

打赏作者

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

抵扣说明:

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

余额充值