Java语言的程序控制结构 (2.5)
在Java语言中,程序的流程控制对于代码执行的逻辑有着至关重要的作用。通过条件控制和循环控制,程序可以做出决策、重复执行任务,并在合适的时间退出。本章将详细介绍这些结构,并通过代码示例和表格来总结和梳理知识点。
条件控制结构 (2.5.1)
if语句 (2.5.1.1)
- 基本结构 (2.5.1.1.1)
- 单独的
if
语句用来根据给定条件执行代码块。 - 格式:
if (condition) { /* 代码块 */ }
- 示例:
if (temperature > 30) {
System.out.println("It's a hot day.");
}
条件 | 执行 |
---|
temperature > 30 | 输出"It's a hot day." |
- if-else结构 (2.5.1.1.2)
- if-else提供了对条件判断的两条路径:当条件为true时执行第一个代码块,为false时执行第二个。
- 格式:
if (condition) { /* 代码块1 */ } else { /* 代码块2 */ }
- 示例:
if (score >= 60) {
System.out.println("Passed");
} else {
System.out.println("Failed");
}
条件 | 结果 |
---|
score >= 60 | "Passed" |
否则 | "Failed" |
- 嵌套if语句 (2.5.1.1.3)
- 嵌套if允许在if或else代码块中再次使用if或else,用于更复杂的条件测试。
- 示例:
if (user.isLoggedIn()) {
if (user.hasPermission("admin")) {
System.out.println("Show admin panel");
} else {
System.out.println("Show regular panel");
}
}
- else if链 (2.5.1.1.4)
- else if链允许根据一个以上的条件进行判断,依次测试每个条件,直到找到一个为true的条件。
- 格式:
if (condition1) { /* 代码块1 */ } else if (condition2) { /* 代码块2 */ } /* 更多else if */ else { /* 默认代码块 */ }
- 示例:
if (grade >= 90) {
System.out.println("Grade A");
} else if (grade >= 80) {
System.out.println("Grade B");
} else if (grade >= 70) {
System.out.println("Grade C");
} else {
System.out.println("Fail");
}
Grade 范围 | 输出 |
---|
>= 90 | "Grade A" |
>= 80 | "Grade B" |
>= 70 | "Grade C" |
< 70 | "Fail" |
switch语句 (2.5.1.2)
- switch-case结构
- switch允许基于一个表达式的值选择执行的代码路径,更适用于有多个值需要比较的场景。
- 格式:
switch (expression) { case value1: /* 代码块1 */ break; case value2: /* 代码块2 */ break; /* 更多的cases */ default: /* 默认代码块 */ }
- 示例:
switch (dayOfWeek) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
// ...更多的cases
default:
System.out.println("Unknown day");
break;
}
Day of Week | 输出 |
---|
1 | "Monday" |
2 | "Tuesday" |
... | ... |
Default | "Unknown day" |
循环控制结构 (2.5.2)
for循环 (2.5.2.1)
- for结构
- 当你知道需要执行确定次数的循环时,
for
循环是最合适的选择。 - 格式:
for (initialization; test; update) { /* 代码块 */ }
- 示例:
for (int i = 0; i < 5; i++) {
System.out.println("This is loop iteration " + i);
}
while循环 (2.5.2.2)
- while结构
while
循环在给定条件为true时重复执行一系列操作。- 格式:
while (condition) { /* 代码块 */ }
- 示例:
int count = 0;
while (count < 5) {
System.out.println("Count is " + count);
count++;
}
do-while循环 (2.5.2.3)
- do-while结构
do-while
循环至少执行一次代码块,之后如果条件为true,则继续执行。- 格式:
do { /* 代码块 */ } while (condition);
- 示例:
int count = 0;
do {
System.out.println("Count is " + count);
count++;
} while (count < 5);
控制转移语句 (2.5.3)
break语句 (2.5.3.1)
- break结构
- 立即退出当前的循环或
switch
结构,通常用于结束循环或在适当的switch
case执行后离开switch
块。 - 示例:
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
continue语句 (2.5.3.2)
- continue结构
- 跳过当前迭代余下的代码,直接进入下一次迭代。
- 示例:
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
return语句 (2.5.3.3)
- return结构
- 用于退出当前方法,可带返回值(如果方法声明了需要返回值)。
- 示例:
public int square(int num) {
return num * num;
}
简易的学生成绩评级系统:
package demo;
import java.util.Scanner;
public class StudentGradeSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 通过循环结构接收用户输入直到用户选择退出
while (true) {
System.out.println("请输入学生的成绩(输入-1退出程序):");
int grade = scanner.nextInt();
// 使用 continue 控制转移语句跳过无效的输入
if (grade < -1 || grade > 100) {
System.out.println("无效的输入,请输入0-100之间的数值。");
continue;
}
// 使用 break 控制转移语句退出循环,结束程序
if (grade == -1) {
System.out.println("退出程序。");
break;
}
// 通过 if-else 控制结构决定学生成绩的评级
if (grade >= 90) {
System.out.println("Grade A");
} else if (grade >= 80) {
System.out.println("Grade B");
} else if (grade >= 70) {
System.out.println("Grade C");
} else if (grade >= 60) {
System.out.println("Grade D");
} else {
System.out.println("Fail");
}
}
// 退出while循环后关闭scanner
scanner.close();
}
}