java多重循环: 输出直角三角形,等腰三角形,菱形

        学习中不断求解,逻辑思维太乱,需要慢慢的整理,今天整理下双重for的简单循环;给每个做一个思路和步骤解释,转变思维,理解Java的解题逻辑,否则一直无法理解Java思维,现在的弊端就是知识点混乱,逻辑没有,看着略懂,自己写懵逼,把每个代码的逻辑理清然后在写,我想虽然感觉傻逼,前期慢浪费时间,但是会比较巩固吧,加油!

1.代码:

public static void main(String[] args) {
        //直角三角形
        for (int i = 0; i <= 5; i++) {//初始值i为0;i<=5的条件为i小于等于5;递增,i第一次输出从0开始不断递增,加上=5,一共执行了6次;
            //System.out.println("输出:"+i);
            //建立第一个循环,控制的是行,外层控制内层;表示最外层循环内层多少次。
            for (int j = 0; j <=i; j++) {
                //第二个循环控制的是列数,也就是控制外层进行的每一次循环的结果,循环1次出现1个*,两次两个*...类推,有条件控制循环的次数,迭代累加循环;
                System.out.print(" *");
                //循环输出*这个符号
                //Debug时可以看到:
                // 第一次的循环i=1,j=1;,也就是说那么外层第一次循环内层里为1个*,记得条件时j< i 的,记录存储这一次,
                //第二次的循环i=2,j=2;,也就是说i开始第2次循环了,也就是j最大循环2次,会出现2个*,那么外层的2次循环就是有了3个*,
                //在外循环我们设置了一个sout,那么就会出现换行,否则为一条横线,若是在循环里进行换行则会出现竖着的一条线;
                //以此类推
            }
            System.out.println();
        }
        //倒直角三角,直角在左上
        //?这个倒三角直接显示在上面的循环下面,是因为读取的顺序吗?
        //在一个类里面的不同或作用域里面我们定义了同变量是不影响的,因为在不同的作用域里,所以不影响
        // 输入在同一个作用域里那就会影响了;
        for (int a = 0; a <= 5; a++) {//外循环,控制内层循环次数 5次,也就是这里面的行;
            for (int b =a; b <= 5; b++) {
                //随着a的增加,那么b循环的次数就会减少;
                //内循环,只控制控制内层里的内容的循环,
                //因为是要倒三角,肯定是越来越少,所以循环条件里的初始值b=a,随着变量a的循环次数增加递增,
                // b的初始值越来越大,那么b的循环次数也就越来的越少了,数量就会越来越少;
                System.out.print(" !");
            }
            System.out.println();
            //换行操作,要记得这个输出要放在二次循环外面,否则每次循环列的次数是都会进行换行
            //将这个放在外层循环里面就是外层循环1结束后进行以此输出,就是换行,也就是一轮内循环结束在内循环结束
            //若是想要在最后只输出一次的提示,一定要在循环外面,否则会跟着循环次进行输出;循环多少次,输出多少次;
        }
        //直角在右上的三角形状;另加一个“ ”4*4的空格的循环三角形
        for (int c = 0; c <= 5; c++) {//总循环5次c
            for (int y =0; y <c ; y++) {
                //要做一个在右上角的直角三角形,我们就在同循环里在加个内循环同步执行;
                //要循环五次输出五行的*号,想想我们其实只需要建立一个空格的循环三角形,把*三角形挤过去
                //外层行循环第一次的时候,y<c,也就是循环的时候从开始每次比行少一次,外层c从1开始累加,
                // y从0开始,但是条件是y<0,所以第一个条件不满足;那么就会跳过第一行,
                // 从第二行开始执行,出现空格,将三角形往右边挤,实现右上的直角三角形;
                System.out.print(" 0");
                //我们执行输出的空格个数 要 与输出的* 的个数相对应,我们使用0来体现执行的过程

            }
           for (int y = c; y < 5; y++) {
                System.out.print(" *");
            }
            System.out.println();
        }

        //菱形,打印一个等腰三角形,再打出一个倒等腰三角形就形成了菱形
        //等腰三角形:先建立一个左上的空格直角三角形,然后建立一个右下的*直角三角形,
        //将*直角的列(内层循环)的条件改为y=x*2-1(就是行的次数*2-1得出双倍的* 然后-1是得以出现第一列为1个*
        // 且保持两边的对称  否则每列输出的就是2倍行数量的*;
        for (int x = 0; x <= 5; x++) {
            for (int y = 0; y < 5-x; y++) {
                System.out.print(" |");
            }for (int y = 0; y < x*2-1; y++) {
                System.out.print(" *");
            }
            System.out.println();
        }
        //倒等腰三角形,将等腰三角形的空格改为左下直角,然后在按照右上直角的方法条件设定为*2-1保持对称就好了;
        for (int a = 0; a <= 5; a++) {//外循环,控制内层循环次数 5次,也就是这里面的行;
            for (int b = 0; b <a; b++) {
                //内循环,只控制控制内层里的内容的循环,
                //因为是要倒三角,肯定是越来越少,所以循环条件在i最大值的基础上减去i,
                System.out.print("  ");
            }
            for (int b = 0; b <(5-a)*2-1; b++) {
                System.out.print(" !");
            }
            System.out.println();
        }

    }

2.代码结果:

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值