- 第5章 程序控制结构
-
- 程序流程控制介绍
-
- if 分支
-
- switch 分支结构
-
- for 循环控制
-
- while 循环控制
-
- do..while 循环控制
-
- 跳转控制语句-break
-
- 跳转控制语句-continue
-
- 跳转控制语句-return
第5章 程序控制结构
程序流程控制介绍
- 顺序控制
- 分支控制
- 循环控制
if 分支
switch 分支结构
switch(表达式){case常量1;语句块1;break;case常量2;语句块2;break;...case常量n;语句块n;break;default:default语句块;break;
}
- 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的
类型,比如输入的是字符,而常量是int
- switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)
- case子句中的值必须是常量,而不能是变量
- default子句是可选的,当没有匹配的case时,执行default
- break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;
for 循环控制
for (循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句);
}
while 循环控制
while(循环条件){循环体(语句);循环变量迭代;
}
do..while 循环控制
do{循环体(语句);循环变量迭代;
}while(循环条件);
跳转控制语句-break
break 语句用于终止某个语句块的执行,一般使用在switch 或者循环[for , while , do-while]中。
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。如果没有指定break,默认退出最近的循环体
例:实现登录验证,有3 次机会,如果用户名为"丁真" ,密码"666"提示登录成功,否则提示还有几次机会,请使用for+break
import java.util.Scanner;
public class BreakExercise02 { //编写一个main方法public static void main(String[] args) {//实现登录验证,有3次机会,如果用户名为"丁真" ,密码"666"提示登录成功,//否则提示还有几次机会,请使用for+break完成//// 思路分析// 1. 创建Scanner对象接收用户输入 // 2. 定义 String name ; String passwd; 保存用户名和密码// 3. 最多循环3次[登录3次],如果 满足条件就提前退出// 4. 定义一般变量 int chance 记录还有几次登录机会// // 代码实现Scanner myScanner = new Scanner(System.in);String name = "";String passwd = "";int chance = 3; //登录一次 ,就减少一次for( int i = 1; i <= 3; i++) {//3次登录机会System.out.println("请输入名字");name = myScanner.next();System.out.println("请输入密码");passwd = myScanner.next();//比较输入的名字和密码是否正确//补充说明字符串 的内容 比较 使用的 方法 equals// 字符串比较推荐这种写法,可以有效避免空指针。相比于("name".equals(丁真))if("丁真".equals(name) && "666".equals(passwd)) {System.out.println("恭喜你,登录成功~");break;}//登录的机会就减少一次chance--;System.out.println("你还有" + chance + "次登录机会");}}
}
跳转控制语句-continue
continue 语句用于结束本次循环,继续执行下一次循环。
continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环, 这个和前面的标签的使用的规则一样.
跳转控制语句-return
return 使用在方法,表示跳出所在的方法。当然可以,下面我将对每个部分进行详细的扩展解释,帮助您更深入地理解程序控制结构及其应用。
1. 程序流程控制介绍
程序控制结构是编程语言中最基本的部分之一,它们决定了程序执行的顺序。根据控制方式的不同,可以分为以下几种类型:
- 顺序控制:这是最简单的执行方式,程序按代码书写的顺序一条接一条地执行。
- 分支控制:根据条件判断的结果选择执行不同的代码块。主要通过
if
语句和switch
语句实现。 - 循环控制:当满足特定条件时,重复执行一段代码。常用的循环结构有
for
、while
和do...while
。
2. if 分支
if
语句是最基本的条件判断结构,用于根据布尔表达式的结果来决定是否执行某个代码块。其基本形式如下:
if (条件) {// 当条件为真时执行的代码块
} else if (另一个条件) {// 当第一个条件为假,而此条件为真时执行的代码块
} else {// 当所有条件都为假时执行的代码块
}
3. switch 分支结构
switch
语句用于多条件分支的选择,适用于当需要根据一个变量的值来选择多个可能的操作之一时。其语法如下:
switch (表达式) {case 常量1:// 代码块1break;case 常量2:// 代码块2break;// 可以有多个 casedefault:// 如果没有任何 case 匹配,则执行 default 代码块break;
}
- 表达式数据类型:
switch
中的表达式必须是byte
、short
、int
、char
、enum
类型或String
类型。 - case 子句:每个
case
后面的值必须是常量,不能是变量。 - default 子句:是可选的,当没有
case
匹配时执行。 - break 语句:用于防止“穿透”,即执行完一个
case
后自动跳出switch
语句,如果不使用break
,程序将继续执行下一个case
。
4. for 循环控制
for
循环是一种预测试循环,通常用于已知循环次数的情况。其基本形式如下:
for (初始化; 条件; 更新) {// 循环体
}
- 初始化:定义和初始化循环变量。
- 条件:在每次循环开始前检查的条件,如果为真则执行循环体。
- 更新:在每次循环结束后执行,通常用于更新循环变量。
5. while 循环控制
while
循环也是一种预测试循环,但它更灵活,适合于不确定循环次数的情况。其基本形式如下:
while (条件) {// 循环体
}
6. do...while 循环控制
do...while
循环是一种后测试循环,保证循环体至少执行一次。其基本形式如下:
do {// 循环体
} while (条件);
7. 跳转控制语句
- break
break
语句用于立即退出最内层的循环或 switch
结构。在多层嵌套的循环中,可以通过标签指定要退出的具体层次。
outer: // 标签
for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {if (某个条件) {break outer; // 跳出外层循环}}
}
- continue
continue
语句用于跳过当前循环体的剩余部分,并开始下一次循环。同样,可以通过标签指定跳过的具体层次。
outer: // 标签
for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {if (某个条件) {continue outer; // 跳过内层循环,继续外层循环}}
}
- return
return
语句用于从方法中返回,可以选择返回一个值给调用者。如果方法的返回类型为 void
,则不需要返回值。
public int add(int a, int b) {return a + b; // 返回 a 和 b 的和
}
8. 示例代码详解
您提供的示例代码实现了用户登录验证的功能,用户有三次登录机会。以下是代码的详细解释:
import java.util.Scanner;public class BreakExercise02 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);String name = "";String passwd = "";int chance = 3; // 登录机会for (int i = 1; i <= 3; i++) { // 3次登录机会System.out.println("请输入名字");name = myScanner.next();System.out.println("请输入密码");passwd = myScanner.next();// 比较输入的名字和密码是否正确if ("丁真".equals(name) && "666".equals(passwd)) {System.out.println("恭喜你,登录成功~");break; // 登录成功,跳出循环}// 登录的机会减少一次chance--;System.out.println("你还有" + chance + "次登录机会");}}
}
- 创建
Scanner
对象:用于从标准输入读取用户的输入。 - 定义变量:
name
和passwd
用于存储用户输入的用户名和密码,chance
用于记录剩余的登录机会。 - for 循环:最多循环3次,每次循环提示用户输入用户名和密码。
- 条件判断:使用
if
语句判断用户名和密码是否正确。如果正确,输出“登录成功”并使用break
语句跳出循环。 - 减少登录机会:如果输入错误,减少一次登录机会,并提示用户剩余的登录机会数。