文章目录
- 程序控制结构
- 一、程序流程控制介绍
- 二、顺序控制
- 三、分支控制 if-else
- 1. 分支控制 if-else 介绍
- 2. 单分支
- 四、双分支
- 1.双分支
- 2. 多分支
- 3. 多分支的流程图(重要!)
- 五、嵌套分支
- 1. 基本介绍
- 2. 基本语法
- 六、switch 分支结构
- 1. 基本语法
- 2. 流程图
- 3. 快速入门
- 4. switch 注意事项和细节讨论
- 5. switch 和 if 的比较
- 七、for 循环控制(!!!)
- 1. 看一个实际需求
- 2. 基本语法
- 3. for 循环执行流程分析![在这里插入图片描述](https://s2.51cto.com/images/blog/202404/08182639_6613c65f7de8883176.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
- 4. 注意事项和细节说明
- 八、while 循环控制
- 1. 基本语法
- 2.while 循环执行流程分析![在这里插入图片描述](https://s2.51cto.com/images/blog/202404/08182640_6613c6600e11b76187.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
- 3. 代码执行内存分析图![在这里插入图片描述](https://s2.51cto.com/images/blog/202404/08182640_6613c6604ee2543972.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
- 4. 注意事项和细节说明
- 九、do..while 循环控制
- 1. 基本语法
- 2. 说明:
- 3. do...while 循环执行流程分析
- 4. 注意事项和细节说明
- 十、多重循环控制(难点! 重点!)
- 1. 介绍
- 2. 多重循环执行步骤分析:
- 3. 经典的打印金字塔
- 十一、跳转控制语句-break
- 1. 看下面一个需求
- 2. 基本介绍:
- 3. 基本语法:
- 4. 以 while 使用 break 为例,画出示意图
- 5. 快速入门:
- 6. 注意事项和细节说明:
- 十二、跳转控制语句-continue
- 1. 基本介绍:
- 2. 基本语法:
- 3. 以 while 使用 continue 为例,画出示意图
- 4. 快速入门案例
- 5. 细节案例分析和说明:
- 十三、跳转控制语句-return
程序控制结构
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
- 顺序控制
- 分支控制
- 循环控制
二、顺序控制
三、分支控制 if-else
1. 分支控制 if-else 介绍
让程序有选择的的执行,分支控制有三种
- 单分支 if
- 双分支 if-else
- 多分支 if-else if -…-else
2. 单分支
基本语法
if(条件表达式){
执行代码块;(可以有多条语句.)
}
说明:当条件表达式为ture时,就会执行{}的代码。如果为false ,就不执行.特别说明,如果0中只有一条语句,则可以不用{}.建议写上{}
//if 的快速入门
import java.util.Scanner;//导入
public class If01 {
//编写一个 main 方法
public static void main(String[] args) {
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁, //则输出 "你年龄大于 18,要对自己的行为负责,送入监狱"
//
//思路分析
//1. 接收输入的年龄, 应该定义一个 Scanner 对象
//2. 把年龄保存到一个变量 int age
//3. 使用 if 判断,输出对应信息
//应该定义一个 Scanner 对象
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄");
//把年龄保存到一个变量 int age
int age = myScanner.nextInt();
//使用 if 判断,输出对应信息
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
}
System.out.println("程序继续...");
}
}
四、双分支
基本语法
if(条件表达式){
执行代码块1;
}else{
执行代码块2;
}
说明:当条件表达式成立,即执行代码块1,否则执行代码块2.如果执行代码块只有一条语句,则可以省略,否则,不能省略
//if-else 的快速入门
import java.util.Scanner;//导入
public class If02 {
//编写一个 main 方法
public static void main(String[] args) {
//编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁, //则输出 "你年龄大于 18,要对
//自己的行为负责, 送入监狱"。否则 ,输出"你的年龄不大这次放过你了."
//
//思路分析
//1. 接收输入的年龄, 应该定义一个 Scanner 对象
//2. 把年龄保存到一个变量 int age
//3. 使用 if-else 判断,输出对应信息
//应该定义一个 Scanner 对象
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入年龄");
//把年龄保存到一个变量 int age
int age = myScanner.nextInt();
//使用 if-else 判断,输出对应信息
if(age > 18) {
System.out.println("你年龄大于 18,要对自己的行为负责,送入监狱");
} else {//双分支
System.out.println("你的年龄不大这次放过你了");
}
System.out.println("程序继续...");
}
}
1.双分支
2. 多分支
基本语法
if(条件表达式1){
执行代码块1;
}
else if(条件表达式2){
执行代码块2;
}
………
else{
执行代码块n;
}
特别说明:
- 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
- 如果有else ,如果所有的条件表达式都不成立,则默认执行else代码块
3. 多分支的流程图(重要!)
五、嵌套分支
1. 基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外
层分支。老师建议: 不要超过 3 层 (可读性不好)
2. 基本语法
if(){
if(){
//if-else
}else{
//if-else
}
}
六、switch 分支结构
1. 基本语法
2. 流程图
3. 快速入门
案例:Switch01.java
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …根据用户的输入显示相应的信息.要求使用 switch 语句完成代码
import java.util.Scanner;
public class Switch01 {
//编写一个 main 方法
public static void main(String[] args) {
/*
案例:Switch01.java
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …
根据用户的输入显示相应的信息.要求使用 switch 语句完成
思路分析
1. 接收一个字符 , 创建 Scanner 对象
2. 使用 switch 来完成匹配,并输出对应信息
代码
*/
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g)");
char c1 = myScanner.next().charAt(0);//
//在 java 中,只要是有值返回,就是一个表达式
switch(c1) {
case 'a' :
System.out.println("今天星期一,猴子穿新衣");
break;
case 'b' :
System.out.println("今天星期二,猴子当小二");
break;
case 'c' :
System.out.println("今天星期三,猴子爬雪山..");
break;
//..... default:
System.out.println("你输入的字符不正确,没有匹配的");
}
System.out.println("退出了 switch ,继续执行程序");
}
}
4. switch 注意事项和细节讨论
- 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的
- 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. switch 和 if 的比较
- 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可
以使用,建议使用 swtich 语句。 - 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广
七、for 循环控制(!!!)
基本介绍:听其名而知其意,就是让你的代码可以循环的执行.
1. 看一个实际需求
请大家看个案例[For01.java]:编写一个程序, 可以打印 10 句 “你好,韩顺平教育!”。请大家想想怎么做?
2. 基本语法
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
说明
- .for 关键字,表示循环控制
- for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
- 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码
- 如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省略
3. for 循环执行流程分析
4. 注意事项和细节说明
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
- 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
八、while 循环控制
1. 基本语法
循环变量初始化:
while(循环条件){
循环体(语句);
循环变量迭代;
}
说明:
- while循环也有四要素
- 只是四要素放的位置和for不一样
2.while 循环执行流程分析
//while 循环的案例
//
public class While01 {
//编写一个 main 方法
public static void main(String[]
//输出 10 句 你好,韩顺平教育
int i = 1; //循环变量初始化
while( i <= 10 ) {//循环条件
System.out.println("你好,韩顺平教育" + i);//执行语句
i++;//循环变量迭代
}
System.out.println("退出 while ,继续.." + i); // 11
}
}
3. 代码执行内存分析图
4. 注意事项和细节说明
- 循环条件是返回一个布尔值的表达式
- while 循环是先判断再执行语句
九、do…while 循环控制
1. 基本语法
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
2. 说明:
- do while 是关键字
- 也有循环四要素, 只是位置不一样
- 先执行,再判断,也就是说,一定会至少执行一次
- 最后 有一个 分号 ;
- while 和 do…while 区别举例: 要账
3. do…while 循环执行流程分析
4. 注意事项和细节说明
- 循环条件是返回一个布尔值的表达式
- do…while 循环是先执行,再判断, 因此它至少执行一次
十、多重循环控制(难点! 重点!)
1. 介绍
- 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
- 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
- 设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次。
2. 多重循环执行步骤分析:
3. 经典的打印金字塔
使用 for 循环完成下面的案例
请编写一个程序,可以接收一个整数,表示层数(totalLevel),打印出金字塔
public class Stars {
//编写一个 main 方法
public static void main(String[] args) {
/*
*
* *
* *
********
思路分析
化繁为简
1. 先打印一个矩形
*****
*****
*****
*****
*****
2. 打印半个金字塔
* //第 1 层 有 1 个*
** //第 2 层 有 2 个*
*** //第 3 层 有 3 个*
**** //第 4 层 有 4 个*
***** //第 5 层 有 5 个*
3. 打印整个金字塔
* //第 1 层 有 1 个* 2 * 1 -1 有 4=(总层数-1)个空格
*** //第 2 层 有 3 个* 2 * 2 -1 有 3=(总层数-2)个空格
***** //第 3 层 有 5 个* 2 * 3 -1 有 2=(总层数-3)个空格
******* //第 4 层 有 7 个* 2 * 4 -1 有 1=(总层数-4)个空格
********* //第 5 层 有 9 个* 2 * 5 -1 有 0=(总层数-5)个空格
4. 打印空心的金字塔 [最难的]
* //第 1 层 有 1 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 2 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 3 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 4 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
********* //第 5 层 有 9 个* 全部输出*
5 层数做成变量 int totalLevel = 5;
//小伙伴 技术到位,就可以很快的把代码写出
*/
int totalLevel = 20; //层数
for(int i = 1; i <= totalLevel; i++) { //i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for(int k = 1; k <= totalLevel - i; k++ ) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j = 1;j <= 2 * i - 1;j++) {
//当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
if(j == 1 || j == 2 * i - 1 || i == totalLevel) {
System.out.print("*");
} else { //其他情况输出空格
System.out.print(" ");
}
}
//每打印完一层的*后,就换行 println 本身会换行
System.out.println("");
}
}
}
十一、跳转控制语句-break
1. 看下面一个需求
随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次?
提示使用 (int)(Math.random() * 100) + 1
思路分析:
循环,但是循环的次数不知道. -> break ,当某个条件满足时,终止循环
通过该需求可以说明其它流程控制的必要性,比如 break
2. 基本介绍:
break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环[for , while , do-while]中
3. 基本语法:
{ ……
break; ……
}
4. 以 while 使用 break 为例,画出示意图
5. 快速入门:
6. 注意事项和细节说明:
十二、跳转控制语句-continue
1. 基本介绍:
- continue 语句用于结束本次循环,继续执行下一次循环。
- continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的
使用的规则一样.
2. 基本语法:
{ ……
continue; ……
}
3. 以 while 使用 continue 为例,画出示意图
4. 快速入门案例
5. 细节案例分析和说明:
label1:
for(int j = 0; j < 4; j++){
label2:
for(int i = 0; i < 10; i++){
if(i == 2){
//看看分别输出什么值,并分析
//continue ;
//continue label2;
continue label1;
}
System.out.println("i = " + i);
}
十三、跳转控制语句-return
return 使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细的介绍,这里我们简单的提一下。注意:如果 return 写在 main 方法,退出程序…Return01.java