Java 控制流
控制流用于控制程序的执行顺序。本章将介绍条件语句和循环结构。
条件语句
if 语句
int age = 18;
if (age >= 18) {
System.out.println("你已经成年了");
}
if-else 语句
int age = 16;
if (age >= 18) {
System.out.println("你已经成年了");
} else {
System.out.println("你还未成年");
}
if-else if-else 语句
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
嵌套条件
int age = 25;
boolean isStudent = true;
if (age >= 18) {
if (isStudent) {
System.out.println("成年学生");
} else {
System.out.println("成年非学生");
}
} else {
System.out.println("未成年");
}
三元运算符
int age = 20;
String status = age >= 18 ? "成年" : "未成年";
switch 语句
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效日期";
}
System.out.println(dayName);
switch 表达式(Java 14+)
int day = 3;
String dayName = switch (day) {
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
case 4 -> "星期四";
case 5 -> "星期五";
case 6 -> "星期六";
case 7 -> "星期日";
default -> "无效日期";
};
System.out.println(dayName);
循环
for 循环
基本语法
for (int i = 0; i < 5; i++) {
System.out.println(i); // 0, 1, 2, 3, 4
}
增强 for 循环(for-each)
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println(num);
}
while 循环
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
do-while 循环
int count = 0;
do {
System.out.println(count);
count++;
} while (count < 5);
死循环
// while 死循环
while (true) {
// 循环体
}
// for 死循环
for (;;) {
// 循环体
}
循环控制
break - 跳出循环
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当 i 等于 5 时跳出循环
}
System.out.println(i); // 输出 0, 1, 2, 3, 4
}
continue - 跳过本次循环
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // 跳过 i 等于 2 的情况
}
System.out.println(i); // 输出 0, 1, 3, 4
}
循环标签
outer:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) {
break outer; // 跳出外层循环
}
System.out.println("i=" + i + ", j=" + j);
}
}
实战练习
练习 1:计算 1 到 100 的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1+2+...+100 = " + sum);
练习 2:打印九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
}
练习 3:判断素数
int num = 17;
boolean isPrime = true;
if (num < 2) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
}
System.out.println(num + "是素数:" + isPrime);
练习 4:猜数字游戏
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
int target = (int) (Math.random() * 100) + 1;
int guess = 0;
int attempts = 0;
Scanner scanner = new Scanner(System.in);
while (guess != target) {
System.out.print("请输入 1-100 的数字:");
guess = scanner.nextInt();
attempts++;
if (guess > target) {
System.out.println("猜大了!");
} else if (guess < target) {
System.out.println("猜小了!");
}
}
System.out.println("恭喜你猜对了!共用了 " + attempts + " 次");
scanner.close();
}
}
练习 5:输出菱形
int n = 5;
// 上半部分
for (int i = 1; i <= n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
// 下半部分
for (int i = n - 1; i >= 1; i--) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
break、continue 和 return 的区别
| 关键字 | 作用 | 说明 |
|---|---|---|
| break | 跳出循环 | 终止当前循环 |
| continue | 跳过本次循环 | 继续下一次循环 |
| return | 退出方法 | 终止当前方法的执行 |
小结
本章我们学习了:
- 条件语句(if、if-else、if-else if-else、switch)
- switch 表达式(Java 14+)
- for 循环和增强 for 循环
- while 和 do-while 循环
- 循环控制(break、continue、循环标签)
- 多个实战练习
练习
- 打印 1 到 100 中能被 3 整除的数
- 求斐波那契数列的前 20 项
- 找出 100 以内的所有素数
- 模拟用户登录(最多尝试 3 次)
- 实现一个计算器(支持加减乘除)