共计 2372 个字符,预计需要花费 6 分钟才能阅读完成。
乐字节小乐上次讲完了 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、5×5 的空心正方形
思路:要想打印一个 5 ×5 的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的。因此在打印第二三四列的时候,需要再进行一下判断,来确定打印空格。
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("");
}
来个九九乘法表:
先卖个关子,也算是留个作业吧,大家开动脑筋,动动手操作下,下次可以公布答案。