zoukankan      html  css  js  c++  java
  • 乐字节Java循环:循环控制和嵌套循环

    乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环。

    循环有以下四部分:

    一、循环控制

    1. do..while

    直到型 ( 先执行后判断) ,结构为:

     

    先执行循环体,后判断布尔表达式。循环体至少执行一次

    其流程图如下:

    2. for

    灵活的循环 ( 能够确定循环次数) ,结构为:

     

    for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

    for 循环在执行条件测试后,先执行程序部分,再执行迭代因子( ( 步进) ) 。

    初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,下面的语句

    表示无限循环

    在 for 语句的初始化部分声明的变量,其作用域为整个 for 循环体,例如:

    其流程图如下:

    案例:

    a:输出10次HelloWorld

    b:输出1-10的数据

    c:输出10-1的数据

    d:求1-10的和

    e:求1-100的和;求1-100的偶数和,求1-100的奇数和;1-50当中能被3整除的数的和

    f: 求出 1-100当中既能被3整除又能被5整除还能被2整除的和

    g:求出 1-100当中能被3整除或者能被5整除或者能被2整除的和,

    h:求5的阶乘 5!

    i:请找出[1,200]之间能被3整除的 所有数,每行输出5个数。

    J:请找出[1,200]之间能被3整除的所有数,每行输出5个数,每个数之间用逗号分隔。

    K:1+2+3+4+5+6+7+8+9+10=55用程序实现

    思考:

    键盘输入一个年月日、判断该年月日是该年的第几天。

    键盘输入一个年月日、判断该年月日离该年结束还有多少天。

    二、嵌套循环

    指的是在一个循环语句内部再嵌套一循环或者多个循环输出如下图形:

    1、5x5的空心正方形

    思路:要想打印一个5x5的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的。因此在打印第二三四列的时候,需要再进行一下判断,来确定打印空格。

    for (int x = 0;x<5 ;x++ )  //先确定是5行5列的正方形
            {
                if (x>0 && x<4)  //打印出中间空的情况
                {
                    for (int z=0;z<5 ;z++ )  //打印竖的列
                    {
                        if (z==0 | z==4) //第一和最后一列
                        {
                            System.out.print("* ");  //输出“* ”
                        }else if(z>=1 && z<=4){  //中间三列
                            System.out.print("  ");//输出“  ”
                        }
                        
                    }
    
                }
                else if(x==0 | x==4){  //第一行和最后一行
                    for (int y=0;y<5 ;y++ )
                    {
                        System.out.print("* ");//全部都输出“*”
                    }
                }
                System.out.println("");//println做一个换行(print输出的内容是不换行的)
            }

     

    2、菱形

    思路分析: 输出一个菱形,可以拆分成两部分进行思考,分成上下两个三角形来进行输出,那好了,如何输出一个三角那,首先,三角形的是一个等腰三角形,而不是直角三角形,所以横排除了遍历“*”之外,还需要在其前边添加若干空格把它挤过去 ,显得比较好看,所以还得遍历他前边的空格。

    for (int x = 0;x<10 ;x++ )//假设一共有10竖排
            {
                if (x<=5)//上半个三角形的情况
                {
                    for (int z =5-x;z>0 ;z-- )//前边的空格是一个越来越少的三角形形态,所以定义为5-x
                    {
                        System.out.print(" ");
                    }
                    for (int y=0;y<x ;y++ )// 第一行一个“*”,第二行2个“*”,可以得出列数是和行数相等的,故定义y<x;
                    {
                        System.out.print("* ");//此时输出“* ”;
                    }
                }else//这是下半个三角形的情况
                {
                    for (int z =0;z<x-5 ;z++ )  //此时前边空格形态是上少下多,正好为x-5;
                    {
                        System.out.print(" ");
                    }
                    for (int y=10-x;y>0 ;y-- )//上宽下窄,所以遍历“*”为10-x;
                    {
                        System.out.print("* ");
                    }                
                }
                System.out.println("");
            }

    3、空心菱形

    思路分析:输出一个空心菱形,需要拆分成三部分进行思考,分成上下两个三角形来进行输出,那好了,如何输出一个三角那,首先,三角形的是一个等腰三角形,而不是直角三角形,所以横排除了遍历中间的菱形部分之外,还需要在其前边添加若干空格把它挤过去 ,显得比较好看,所以还得遍历他前边的空格。中间的空格也需要进行单独遍历,而“*”做的框,只需要把确定的值确定出来,让它输出“*”,即可!

    for (int x = 0;x<10 ;x++ )//假设一共有10竖排
            {
                if (x<=5)//上半个三角形的情况
                {
                    for (int z =5-x;z>0 ;z-- )//前边的空格是一个越来越少的三角形形态,所以定义为5-x
                    {
                        System.out.print(" ");
                    }
                    for (int y=0;y<x ;y++ )//这里了开始就进入正题了,
                    {
                        if (y==0 | y==x-1) //这是两边的框, 此时输出“* ”
                        {
                            System.out.print("* ");
                        }else{//中间剩下的部分输出空格
                            System.out.print("  ");
                        }
                    }
                }else{                
                    for (int z =0;z<x-5 ;z++ ) //此时前边空格形态是上少下多,正好为x-5;
                    {
                        System.out.print(" ");// 不多说,先把空格怼进去
                    }
                    for (int y=10-x;y>0 ;y-- )// 10-x为有几列
                    {
                        if (y==1 | y==10-x ) //第一列和10-x(最后一列)输出“*”做一个框出来
                        {
                            System.out.print("* ");
                        }else{  //中间部分输出空格
                            System.out.print("  ");
                        }
                    }            
                }
                System.out.println("");
            }

    来个九九乘法表:

    先卖个关子,也算是留个作业吧,大家开动脑筋,动动手操作下,下次可以公布答案。

  • 相关阅读:
    多按键设计的标准思路
    与,非,或门总结
    i2c中应答信号信号总结
    i2c中start和restart的区别
    poj 1631 Bridging signals
    poj 2533 Longest Ordered Subsequence
    poj 1887 Testing the CATCHER
    poj 1088 滑雪
    poj 1014 Dividing
    babel转码时generator的regeneratorRuntime
  • 原文地址:https://www.cnblogs.com/lotbyte/p/11177309.html
Copyright © 2011-2022 走看看