程序控制结构
1. 程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,主要有三大流程控制语句。
1)顺序控制 2)分支控制 3)循环控制
2. 程序控制
程序自上而下,逐行进行没有跳转和判断
3 分支控制 if-else
3.1 分支控制 if-else 介绍
让程序有选择的的执行,分支控制有三种
1)单分支 if
if(条件表达式){
执行代码块;(可以有多条语句.)
}
//说明: 当条件表达式为ture 时,就会执行{}的代码。如果为false,就不执行.特别说明,如果{}中只有一条语句,则可以不用 (},建议写上 {}
2)双分支 if-else
if(条件表达式){
执行代码块1;
}
else{
执行代码块2;
}
//说明: 当条件表达式成立,即执行代码块1,否则执行代码块2.如果执行代码块只有一条语句,则{}可以省略,否则,不能省略
3)多分支 if-else if -....-else
if (条件表达式1){
执行代码块1;
}
else if (条件表达式2){
执行代码块2;
}
......
else{
执行代码块n;
}
/*
特别说明: (1)多分支 可以没有 else ,如果所有的条件表达式都不成立,则一个执行入口都没有
(2)如果有 else,如果所有的条件表达式都不成立,则默认执行else代码块*/
Scanner 的使用:
引入 Java.util.Scanner
新建变量 Scanner myScanner = new Scanner(System.in);
int类型使用 int age = myScanner.nextInt();
char类型使用 char name = myScanner.next().charAt(0);
4 嵌套分支
4.1 基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。建议: 不要超过 3 层 (可读性不好)
4.2 基本语法
if(){
if(){
//if-else
}else{
//if-else
}
}
5 switch 分支结构
5.1 基本语法
if(条件表达式){
执行代码块;(可以有多条语句.)
}
//说明: 当条件表达式为ture 时,就会执行{}的代码。如果为false,就不执行.特别说明,如果{}中只有一条语句,则可以不用 (},建议写上 {}
5.2 流程图
5.4 switch 注意事项和细节讨论
-
表达式数据类型,应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
-
switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)
double c = 1.1;
switch(c){//错误
case 1.1;//错误
System.out.println("ok3");
break;
}
-
case子句中的值必须是常量,而不能是变量
-
default子句是可选的,当没有匹配的case时,执行default
-
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;
5.6 switch和if的比较
- 如果判断的具体数值不多,而且符合 byte、short 、int、char,enum[枚举],String这6种类型。虽然两个语句都可以使用,建议使用 swtich 语句。 2)其他情况:对区间判断,对结果为 boolean 类型判断,使用if,if的使用范围更广
6 for 循环控制(! ! !)
6.1 基础语法及说明
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
说明
-
for 关键字,表示循环控制
-
for 有四要素:
- (1)循环变量初始化
- (2)循环条件
- (3)循环操作
- (4)循环变量迭代
-
循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码
-
如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省略
6.2 for循环执行流程分析
6.3 注意事项和细节说明
1)循环条件是返回一个布尔值的表达式
2)for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方(作用域不同),但是两边的分号不能省略。
3)循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
7 while 循环控制
7.1 基本语法
while(循环条件){
循环体(语句);
循环变量迭代;
}
说明:
1)while 循环也有四要素
2)只是四要素放的位置和for不一样
7.2 while 循环执行流程分析
7.3 注意事项和细节说明
1)循环条件是返回一个布尔值的表达式
2)while 循环是先判断再执行语句
8 do..while 循环控制
8.1 基本语法
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
}
8.2 说明:
do while 是关键字
也有循环四要素, 只是位置不一样
先执行,再判断,也就是说,一定会至少执行一次
最后 有一个 分号 ;
while 和 do..while 区别举例: 要账
8.3 do...whie 循环执行流程分析
1)流程图
8.4 注意事项和细节说明
1)循环条件是返回一个布尔值的表达式
2)do..while 循环是先执行,再判断, 因此它至少执行一次
8.5 练习题
import java.util.Scanner;
public class DoWhileExercise02{
public static void main(String[] args) {
//如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为
//[System.out.println("老韩问:还钱吗?y/n")] do...while .. //
//化繁为简
//(1) 不停的问还钱吗?
//(2) 使用 char answer 接收回答, 定义一个 Scanner 对象
//(3) 在 do-while 的 while 判断如果是 y 就不在循环
Scanner myscanner = new Scanner(System.in);
char answer = ' ';
do{
System.out.println("老韩问:还钱吗?y/n");
answer = myscanner.next().charAt(0);
System.out.println("回答" + a);
}while(a != 'y');
System.out.println("李三还钱了");
}
}
9 多重循环控制(难点! 重点!)
9.1 介绍
1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。
【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环[
3)设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次。
9.2 多重循环执行步骤分析:
//请分析 下面的多重循环执行步骤, 并写出输出 => 韩老师的内存分析法
//双层 for MulFor.java
for(int i = 0; i < 2; i++) { //先思考
for( int j = 0; j < 3; j++) {
System.out.println("i=" + i + j=" + j);
}
}
10 跳转控制语句-break
10.1 看下面一个需求
随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次?
提示使用 (int)(Math.random() * 100) + 1
思路分析:
循环,但是循环的次数不知道. -> break ,当某个条件满足时,终止循环
通过该需求可以说明其它流程控制的必要性,比如 break
10.2 基本介绍:
break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环[for , while , do-while]中
10.3 基本语法
{ ……
break;
……
}
10.4 以 while 使用 break 为例,画出示意图
10.5 快速入门
5.10.6 注意事项和细节说明:
11 跳转控制语句-continue
11.1 基本介绍:
1)continue 语句用于结束本次循环,继续执行下一次循环。
2)continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的
使用的规则一样
11.2 基本语法
{ ……
continue;
……
}
11.3 以 while 使用 continue 为例,画出示意图
11.4 快速入门案例
12 跳转语句-return
return 使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细的介绍,这里我们简单的提一下。注意:如果 return 写在 main 方法,退出程序.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇