day03【 流程控制语句】
今日内容
- if else判断语句
- switch选择语句
- for循环语句
- while循环语句
- do while循环语句
- 跳出语句break,continue
教学目标
-
理解if语句的格式和执行流程
-
理解if…else语句的格式和执行流程
-
理解if…else if语句的格式和执行流程
-
了解if else语句和三元运算符互换
一个条件判断,两种处理方式
-
理解switch选择语句的格式和执行流程
-
了解switch选择语句接收的数据类型(byte short int char 枚举 字符串)
int(byte short char) String常用
-
了解case的穿透性 break忽略
-
理解while语句的格式和执行流程
-
理解for语句的格式和执行流程
-
理解do…while语句的格式和执行流程
-
了解do…while循环的特点
-
了解跳出语句break,continue的意义
-
理解嵌套for循环的执行流程
第一章:流程控制概述
学习目标
- 理解什么是流程控制,知道程序的三种流程控制
内容详解
1.什么是流程控制?
流程是什么呢?比如我们去诊所看病,我们先要去窗口挂号,然后排队就医,医生看完之后会给你处方,然后去窗口排队缴费,最后取药完事,看病这一系列要做的事情完成的过程叫做流程。医院对看病流程步骤的布置和安排我们叫做流程的控制。
流程控制就是对事物次序的布置和安排 。
而程序中的流程控制就是对代码执行次序的安排和控制。
2.程序中的三种流程控制
程序中的流程我们可以通过代码的结构去控制,比如我们只要把一些打印输出的代码按照指定顺序的结构,依次排列,打印的结果就会按照代码的顺序结构执行打印,这就是程序中最简单的顺序流程
。
程序中出了顺序流程之外,还有选择流程和循环流程
序号 | 执行流程 | 代码结构 |
---|---|---|
1 | 顺序流程 | 顺序结构 |
2 | 选择流程 | 选择结构 |
3 | 循环流程 | 循环结构 |
选择流程:选择结构的代码实现,
循环流程:循环结构的代码实现。
而今天的内容我们将对实现这三种流程的代码结构的代码格式进行一一学习。
知识小结
流程控制就是对代码执行次序的安排和控制,包含三种顺序流程,选择流程,循环流程。
每一种流程都有其对应的代码结构,顺序流程对应顺序结构,选择流程对应选择结构,循环流程对应循环结构。
第二章 顺序结构
学习目标
- 理解代码的顺序流程执行
内容详解
顺序结构是一种最容易理解的一种代码结构,其执行的顺序由代码编写的顺序控制,从上到下执行。
public static void main(String[] args){
//顺序执行,根据编写的顺序,从上到下运行
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
输出的结果为:
1
2
3
按照代码的顺序执行
执行流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-grl5D1zQ-1575363640109)(/img/01-顺序结构的流程图.png)]
知识小结
顺序结构就是代码是顺序从上往下执行的代码结构。
第三章 选择结构
在生活中经常需要作出一系列的判断然后作出选择,比如走路到红绿灯路口时,我们对灯的颜色进行判断,我们要对灯的颜色进行判断,选择是否通行。
在Java代码中存在一种特殊的语句,叫做选择语句
,这种选择语句也需要对一些条件作出判断,从而选择对应执行的代码。这种选择语句组成的代码结构就是选择结构。
选择语句分为if
条件语句和switch
条件语句。接下来我们对这两种语句进行详细讲解。
3.1 if选择语句(判断语句)
学习目标
- 理解if语句的格式和执行流程
- 理解if…else语句的格式和执行流程
- 理解if…else if语句的格式和执行流程
- 了解if else语句和三元运算符互换
if语句有三种语法格式,每一种语法格式都有其自身的特点。
内容详解
1. if
语句
if 语句是指如果满足某种条件就进行某种处理。比如,如果小明年满18岁就可以去网吧上网。如果使用伪代码(自然语言描述的一种代码实现)去实现如下
如果 小明年满18岁 成立true
可以去网吧上网
上面伪代码中
如果
相当于Java中的关键字if
,小明年满18岁
是判断条件,在Java中需要使用()
括起来,可以去网吧上网
是执行语句,放置在{}
中,修改后代码如下
if ( 小明年满18岁 ) {
可以去网吧上网
//可以有多条语句
}
上面的例子就描述了if语句的格式用法。在Java中if语句的具体语法如下:
格式
... //其他语句
if (判断条件){
语句体;
}
... //其他语句
特点:对一件事情进行判断, 处理事情正面的结果
执行流程
-
首先判断条件看其结果是true还是false
-
如果是true就执行语句体
-
如果是false就不执行语句体
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFxzpf5P-1575363640111)(img/02-单if语句的流程图.png)]
代码实践
就以开始小明上网的例子来进行代码实践。
定义一个int类型的变量age。如果age大于或等于18,在控制台中打印 小明去上网了
。
分别给age赋值16和20,观察打印结果。
public static void main(String[] args){
System.out.println("小明出来玩了")
//int age=16;
int age=20;//20岁
if(age>=18){
System.out.println("小明去上网了");
}
System.out.println("小明回家了")
}
2. if...else
语句
if …else 语句是指如果满足某种条件就进行某种处理,否则就进行另外一种处理。比如上一讲中的小明,如果年满18岁就可以上网,否则就去电玩城打电动。是一种二选一的选择语句,跟我们前一天学的三元表达式是相似的。
格式
if(判断条件) {
语句体1; //布尔表达式为true执行
} else{
语句体2; //条件判断为false的时候执行
}
特点: 他能对事物的两面结果都作出对应的处理
执行流程
-
首先判断条件看其结果是true还是false
-
如果是true就执行语句体1
-
如果是false就执行语句体2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2mPv0efz-1575363640111)(img/03-标准if-else语句的流程图.png)]
代码实践
数学中的自然数不是偶数就是奇数,使用的if … else…判断指定数字的奇偶性。
步骤实现:
先定义一个变量赋值一个整数的值,然后使用if … else… 进行判断。是偶数就打印偶数,否则打印奇数。
public static void main(String[] args){
// 判断给定的数据是奇数还是偶数
// 定义变量
int a = 1;
if(a % 2 == 0) {
System.out.println("a是偶数");
} else{
System.out.println("a是奇数");
}
System.out.println("结束");
}
与三元运算符的互换
if…else结构和三元运算符是相似的,在if…else中两种情况一定会执行其中一种,和三元运算的规则是一样的,他们之间是可以相互转化的。
例如:比较亮两个数的大小,输出较大的数,分别用if…else 和三元运算符实现如下:
public static void main(String[] args){
//使用if...else...
int i1=10;
int i2=20;
if(i1>i2){
System.out.println(i1);
}else{
System.out.println(i2);
}
//使用三元运算符
//格式: 布尔表达式? 真值表达式:假值表达式。
int max= i1>i2 ? i1 : i2;
System.out.println(max);
}
3. if..else if...else
语句
if..else if...else
可以对多个条件进行判断,进行多种不同的处理。
比如,一个学生的考试成绩为score可以进行优(score>=80)、良(score<80&&score>=70)、中(score<70&&score>=60)、差(score<60)的划分。那么在代码中要怎么实现呢?
格式
if (判断条件1) {
执行语句1;
}else if(判断条件2){
执行语句2
}else if(判断条件3){
执行语句3
}
***
else if(判断条件n){
执行语句n
}else {
执行语句n+1; //上面的条件都不满足 为false时
}
格式三是格式一和格式二的组合, 功能更强大了
如下
pubilc ublic static void main(String[] args) {
// x和y的关系满足如下:
// 如果 x>=3 那么 y = 2x + 1;
// 如果 ‐1<=x<3 那么 y = 2x;
// 如果 x<=‐1 那么 y = 2x – 1;
// 根据给定的x的值,计算出y的值并输出。
// 定义变量
int x = 5;
int y;
if (x>= 3) {
y = 2 * x + 1;
} else if (x >= ‐1 && x < 3) {
y = 2 * x;
} else {
y = 2 * x ‐ 1;
}
System.out.println("y的值是:"+y);
}
执行流程
- 首先判断条件1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断条件2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断布尔表达式…看其结果是true还是false
- …
- 如果所有判断条件都为false,就执行语句体n+1。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxYRaTXH-1575363640112)(img/04-扩展if-else语句的流程图.png)]
代码实践
判断学生成绩的等级。
- 90-100 优秀
- 80-89 好
- 70-79 良
- 60-69 及格
- 60以下 不及格
- 如果不在范围内 不合法的数字
先定义一个变量去保存学生的成绩,然后使用当前学习的选择语句进行学生成绩等级的划分。
public static void main(String[] args) {
int socre=99;//定义变量记录分数
if(socre>=90&&socre<=100) {
System.out.println("成绩是优秀的!");
} else if(socre>=80&&socre<90) {
System.out.println("成绩很好!");
} else if(socre>=70&&socre<80) {
System.out.println("成绩良好!");
} else if(socre>=60&&socre<70) {
System.out.println("成绩及格!");
} else if(socre>=0&&socre<60) {
System.out.println("成绩不及格!");
} else {
System.out.println("不合法成绩");
}
}
知识小结
选择结构中的if语句又叫判断语句,有三种形式组成:
-
单if语句
只能对一个判断条件的true值结果进行处理
-
if…else语句
能对一个判断条件的true值和false值结果进行处理
可以和三元运算符互换
-
if…else if… else 扩展语句
能对多个判断条件进行处理
3.2 选择语句switch
学习目标
- 理解switch选择语句的格式和执行流程
- 了解switch选择语句接收的数据类型
- 了解case的穿透性
内容详解
1. switch语句
switch条件语句也是一种比较常用的选择语句,和if条件语句不同的是,switch只能针对**某个表达式的值
**作出判断,从而决定程序执行那一段代码。
例如,在程序中使用数字1~7来表示星期一到星期日,如果想要根据某个特定的数字判断对应的数字表示中文的星期几。如下,
指定的数字
如果数字为1,则输出星期一
如果数字为2,则输出星期二
如果数字为3,则输出星期三
如果数字为4,则输出星期四
如果数字为5,则输出星期五
如果数字为6,则输出星期六
如果数字为7,则输出星期日
对于上面的需求,可能你立马回想到使用 if ... else if ...else
这种结构来实现也是可以的,接下来我们来学习新的一种switch选择语句来实现。
格式
switch(表达式) {// 受检值
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
需要注意的是,表达式中的值需要和case中的常量值类型相匹配。
在switch中的表达式只能是byte、short、int、char、Enum(枚举值)、String(字符串)。用其它的类型值编译会报错。
Enum是在JDK1.5 引入的新特性,
String类型是在JDK1.7引入的新特性。
现在学习的是9.0的JDK版本,所以上面的类型都是支持的。
执行流程
- 首先计算出表达式的值
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9enbBiab-1575363640113)(img/switch.jpg)]
代码实践
下面就用Java代码来实现,根据提供的数字输出对应的中文星期值。
public static void main(String[] args) {
//定义变量,判断是星期几
int weekday = 6;
//switch语句实现选择
switch(weekday) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的数字有误");
break;
}
}
在书写以上代码的时候:特别要注意要break不能漏写。否则会出现case的穿透,改变逻辑。
2. case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,不再判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。这种特性我们称为case的穿透性。
这不是switch的一个bug,既然存在这种现象,必有其存在的价值。也就是说这种case的穿透性,也是能够实现一些需求。
代码实践
例如,使用1~7数字表示星期一到星期日。当指定的数字为1,2,3,4,5时输出工作日
,当指定的数字为6,7
时输出休息日
。如下
public static void main(String[] args) {
int week=1;
switch(week) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default :
System.out.println("数字不在1~7范围之内,请重新指定");
}
}
以上代码中,当变量week
的值为1,2,3,4,5
任一值时处理的方式都是一样,都会打印休息日
。当变量week
的值为6,7
任一值时打印休息日
。这是switch语句的一种简写方式。
在实际开发中灵活运用case的穿透性解决相应的需求。
知识小结
-
switch选择语句中有两种常见的格式:
- 标准格式: 每一个case都对应一个break语句
- case穿透格式:某些case中没写break语句
-
switch中受检值得类型只能是 byte short int char 枚举 字符串
第四章 循环结构
4.1 循环概述
在运动会田径场上10000米项目,运动员循环的在绕着田径场跑步。钟表上的指针也是在不断的做循环的运动等,这是我们生活中能够理解的循环。
在Java语言中有一种特殊的语句叫做循环语句,可以实现将一段代码重复的执行。这种循环语句形成的代码结构就叫做循环结构。
比如,我们可以循环打印10遍Hello World,而不需要写10行System.out.println("Hello World");
代码。
Java中的循环语句结构有三种,分别是:for语句、while语句、do…while语句。
循环结构的基本组成部分,一般可以分成四部分:
- 初始化语句:在循环开始最初执行,而且只做唯一一次。
- 循环判断:如果成立,则循环继续;如果不成立,则循环退出。
- 循环体:重复要做的事情内容,若干行语句。
- 步进语句【控制条件语句】:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。
4.2 循环语句1for
学习目标
- 理解for语句的格式和执行流程
内容详解
1 格式
...
for ( 初始化语句 ① ; 判断条件语句 ② ; 控制条件语句 ④ ) {
循环体语句 ③
}
...
2 执行流程
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化
- ②负责判断是否满足循环条件,不满足则跳出循环
- ③具体执行的语句
- ④循环后,循环条件所涉及变量的变化情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VB4WUpvW-1575363640114)(img/05-for循环的流程图.png)]
3 代码实践
- 1)循环打印10遍“Hello World”
public static void main(String[] args) {
//控制台输出10次HelloWorld,不使用循环
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("-------------------------");
//用循环改进,循环10次
//定义变量从0开始,循环条件为<10
for(int x = 0; x < 10; x++) {
System.out.println("HelloWorld"+x);
}
}
- 2)循环练习:使用循环,计算1-100之间的偶数和
public static void main(String[] args) {
//1.定义一个初始化变量,记录累加求和,初始值为0
int sum = 0;
//2.利用for循环获取1-100之间的数字
for (int i = 1; i <= 100; i++) {
//3.判断获取的数字是奇数还是偶数
if(i % 2==0){
//4.如果是偶数就累加求和
sum += i;
}
}
//5.循环结束之后,打印累加结果
System.out.println("sum:"+sum);
}
知识小结
常规的格式一定要记住:熟练书写for语句
for( 初始化语句 ; 条件判断语句 ; 步进语句 ){
循环体
}
for(int i=0;i<10;i++){
System.out.println("GOOD GOOD STUDY,DAY DAY UP!!");
}
for(int i=100;i<110;i++){
System.out.println("GOOD GOOD STUDY,DAY DAY UP!!");
}
for(int i=0;i<10 ; i=i+2 ){
System.out.println("GOOD GOOD STUDY,DAY DAY UP!!");
}
i=0 ->i=2 ->i=4 ->i=6 ->i=8 ->i =10 结束
变量的变化会影响循环的次数
-
初始化语句中 i 可以使用任何的数字
-
判断语句,一定要保证条件有边界,否则就是死循环了。
for(int i=10 ; i>0; i--){ //i=10 System.out.println("我爱你!!"); i++; // 11 }
-
控制语句可以变通,也可使用
--
,目的是让循环变化量起到变化. -
这里的循环变量
i
出了循环结构就不能使用了
4.3 循环语句2while
学习目标
- 理解while语句的格式和执行流程
内容详解
1. 格式
初始化语句①
while ( 条件判断② ) {
循环体语句③
条件控制语句(步进表达式)④
}
和for循环功能一样,只不过关键字不一样,代码结构不一样。和选择结构中的if判断也有点类似,满足条件就执行 {} 内的语句,区别在于while语句会反复地执行,知道条件不成立。
2. 执行流程
- 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句。
- ④循环后,循环变量的变化情况。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Y2xOZIB-1575363640115)(img/while.jpg)]
3. 代码实践
- 1)while循环输出10次HelloWorld
public static void main(String[] args) {
//while循环实现打印10次HelloWorld
//定义初始化变量
int i = 1;
//循环条件<=10
while(i<=10){
System.out.println("HelloWorld");
//步进
i++;
}
}
- 2)while循环计算1-100之间的和
public static void main(String[] args) {
//使用while循环实现
//定义一个变量,记录累加求和
int sum = 0;
//定义初始化表达式
int i = 1;
//使用while循环让初始化表达式的值变化
while(i<=100){
//累加求和
sum += i ;
//步进表达式改变变量的值
i++;
}
//打印求和的变量
System.out.println("1-100的和是:"+sum);
}
知识小结
- 不要忘记写步进表达式(控制变量语句),否则会成无限执行的循环
4.4 循环语句3do...while
学习目标
- 理解do…while语句的格式和执行流程
- 了解do…while循环的特点
内容详解
1. 格式
初始化表达式①
do{
循环体③
步进表达式条件控制语句④
}while(条件判断语句 ②); //这里有分号结束
☆ while后面有分号结束
**☆ 无条件先执行一次循环体,然后再去做条件判断是否继续执行 **
2 执行流程
- 执行顺序:①③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行的语句
- ④循环后,循环变量的变化情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iBNzfWf-1575363640116)(img/dowhile.jpg)]
3 代码实践
- 1)输出10次HelloWorld
public static void main(String[] args) {
int x=1;
do {
System.out.println("HelloWorld");
x++;
}while(x<=10);
}
do…while循环的特点:
无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。使用用时一定要注意这个特性。
public static void main(String[] args){
do{
System.out.println("无条件执行一次");
}while(false);
}
知识小结
注意事项:
- 无条件会先执行一遍
- while写在后面且
()
后面有分号,记住!
4.5 循环语句的区别
-
如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
-
for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
扩展:
/* 变量作用域(scope) 一段程序代码中所用到的变量并不总是有效/可用的,这个变量的可用范围就是其作用域。 怎么去找一个变量的作用范围(作用域)? 找到包裹变量最近的一对大括号{},从这个变量定义开始到 到右 } 结束,都是这个变量的作用范围 */
-
关于循环的选择,有一个小建议:
凡是次数确定的场景多用for循环;否则多用while循环。如果至少要执行一次使用do…while
代码实践
针对变量作用域
public class Demo2 {
public static void main(String[] args) {
for(int x=1; x<=5; x++){
System.out.println("爱生活,爱Java");
int z=0;
}
//System.out.println(x); //这里的x无法继续访问
System.out.println("-----------------");
int y = 1;
while(y<=10) {
System.out.println("爱生活,爱Java");
y++; //
}
System.out.println(y); // 可以访问y
}
}
4.6 跳转语句
学习目标
- 了解跳出语句 break,continue的意义
内容详解
1.break
使用场景:终止switch或者循环
-
在选择结构switch语句中
当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构(case中不加break会出现穿透,将switch时讲解过)switch结构后面的代码。 -
在循环语句中
当出现在循环语句时,作用是终止并跳出循环语句,继续执行循环结构后面的代码。在while循环中
public static void main(String[] args){ int x=1; //定义变量x,初始值为1 while(x<=10){ //循环条件 if(x==3){ //跳出循环的条件是当x==3的时候 break; //结束整个循环 } System.out.println("x="+x);//条件成立,打印x的值 x++; //x进行自增 } }
以上代码如果不加break语句,将会执行10次。当x==3的时候跳出循环。
在for循环中
public static void main(String[] args){ for(int x=1;x<=10;x++){ System.out.println("x="+x);//打印x的值 if(x==3){ //跳出循环的条件是当x==3的时候 break; //跳出循环 } } }
同while循环,如果没有break语句的话将会执行10次。当x==3的候跳出循环。以上代码只会打印3次
2 continue
使用场景:结束本次循环,继续下一次的循环
例如:对 [1,100] 区间之内的奇数求和,并打印出来。
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <= 100; i++) {
if(i % 2==0){
//如果是偶数,结束本次循环
continue;
}
System.out.println(i);
sum+=i;//不断累加
}
System.out.println(sum);
}
知识小结
- break:作用在switch中或循环语句中使switch或循环终止。
- continue:作用在循环语句中,结束当此循环,继续下一次循环
第五章 扩展知识
5.1 死循环(无限循环,永真循环)
学习目标
- 理解死循环的含义
内容详解
死循环:就是循环中的条件永远为true循环,死循环是不会结束循环的。
常见的无限循环:
1 while死循环和do while死循环
while( true ){
循环体;
}
do{
}while(true);
2 for的格式
for(;;){
循环体;
}
**☆ 在编译过程中若被编译器认定为死限循环,那么在死循环下面不要再写任何的语句,因为无法执行。**即使写了也会报错:错误: 无法访问的语句
3 其他只要满足条件判断始终为true的死循环
int i=0;
while(i<10){
System.out.println(i);
//i++; //如果忘记i++ 了将会永远循环
}
for(int x=1;x>0;i++) { //条件中 x>0 因为 x++永远等于1 所以该循环也是死循环
System.out.println(i);
i--;
}
5.2 嵌套循环
学习目标
- 理解嵌套for循环的执行流程
内容详解
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。
while、do…while、for循环语句都可以进行嵌套,并且他们之间也是可以进行相互嵌套的。如最常见的在for循环中嵌套for循环。
for
嵌套循环格式
for(初始化表达式①; 循环条件②; 控制条件语句⑦) {
for(初始化表达式③; 循环条件④; 控制条件语句⑥) {
执行语句⑤;
}
}
嵌套循环执行流程
-
假如外层循环执行2次,内循环执行次数2次执行顺序:
第一次循环:①②>③④⑤⑥>④⑤⑥>④
第二次循环:⑦②>③④⑤⑥>④⑤⑥>④>⑦②
-
外循环一次,内循环多次。
在生活中也能随处可见,比如说我们的钟表的指针。时、分、秒指针在周而复始的做运动。我们把秒针和分针拿出来分析。
在一小时里,分针要走60次。分针每走一分,秒针就走了60秒。把分针看成是外层循环,秒针看成是内层循环就很好理解了。
for(int min=0;min<60;min++){ //分针 for(int second=0;second<60;second++){ //秒针 System.out.println(min+"时"+second+"分"); //打印时间 } }
总共的循环次数=外循环次数*内循环次在数
代码实践
使用for的嵌套循环打印 5行8列的 * 符号。如下图
********
********
********
********
********
提示:
System.out.println();
换行打印 后面有ln
System.out.print();
不换行打印 后面无ln
public static void main(String[] args) {
//5*8的矩形,打印5行*号,每行8个
//外循环5次,内循环8次
for(int i = 0; i < 5; i++){
for(int j = 0; j < 8; j++){
//不换行打印星号
System.out.print("*");
}
//内循环打印8个星号后,需要一次换行
System.out.println();
}
}
知识小结
嵌套循环就是循环里面还有循环,每一次外层循环,内层循环都要进行完整执行一次。