循环就是让计算机重复执行一段代码的能力
三种循环
1. for循环:知道要做多少次
Java
// for循环结构:for(初始化; 条件; 更新) { 循环体 }
public class ForLoopSimple {
public static void main(String[] args) {
System.out.println("=== for循环示例 ===");
// 示例1:打印1到5
System.out.println("1. 打印1到5:");
for (int i = 1; i <= 5; i++) {
System.out.println("数字: " + i);
}
// 示例2:计算1到10的和
System.out.println("\n2. 计算1到10的和:");
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum = sum + i; // 累加
}
System.out.println("和是: " + sum);
// 示例3:打印乘法表
System.out.println("\n3. 5×5乘法表:");
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print(i * j + "\t");
}
System.out.println(); // 换行
}
}
}
2. while循环:不确定要做多少次
Java
// while循环结构:while(条件) { 循环体 }
public class WhileLoopSimple {
public static void main(String[] args) {
System.out.println("=== while循环示例 ===");
// 示例1:计数器
System.out.println("1. 倒计时:");
int countdown = 5;
while (countdown > 0) {
System.out.println("倒计时: " + countdown);
countdown--; // 减1
}
System.out.println("发射!");
// 示例2:猜数字游戏
System.out.println("\n2. 猜数字游戏:");
int secretNumber = 42;
int guess = 0;
while (guess != secretNumber) {
guess = 30 + (int)(Math.random() * 20); // 随机猜30-50
System.out.println("猜: " + guess);
}
System.out.println("猜对了!数字是 " + secretNumber);
}
}
3. do-while循环:至少做一次
Java
// do-while循环结构:do { 循环体 } while(条件);
public class DoWhileLoopSimple {
public static void main(String[] args) {
System.out.println("=== do-while循环示例 ===");
// 示例1:至少执行一次
System.out.println("1. 用户确认:");
String answer;
do {
System.out.print("你喜欢Java吗?(yes/no): ");
// 假设用户输入"yes"
answer = "yes";
System.out.println("你的回答: " + answer);
} while (answer.equals("no")); // 如果回答"no"就继续问
System.out.println("太好了!");
// 示例2:菜单选择
System.out.println("\n2. 菜单选择:");
int choice;
do {
System.out.println("1. 开始游戏");
System.out.println("2. 查看帮助");
System.out.println("3. 退出");
choice = 1; // 假设用户选择了1
System.out.println("你选择了: " + choice);
} while (choice != 3); // 只要不是3就继续显示菜单
System.out.println("再见!");
}
}
循环控制:break和continue
Java
public class LoopControl {
public static void main(String[] args) {
System.out.println("=== 循环控制 ===");
// 1. break:立即结束整个循环
System.out.println("1. break示例(找到7就停止):");
for (int i = 1; i <= 10; i++) {
if (i == 7) {
System.out.println("找到7了,停止!");
break; // 立即跳出循环
}
System.out.println("当前数字: " + i);
}
// 2. continue:跳过本次循环的剩余部分
System.out.println("\n2. continue示例(跳过偶数):");
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) { // 如果是偶数
continue; // 跳过这次循环,继续下一次
}
System.out.println("奇数: " + i);
}
// 3. 综合示例:计算及格人数
System.out.println("\n3. 计算及格人数:");
int[] scores = {85, 42, 90, 56, 78, 30, 95};
int passCount = 0;
for (int score : scores) {
if (score < 60) {
continue; // 不及格,跳过
}
passCount++; // 只有及格才计数
System.out.println("及格分数: " + score);
}
System.out.println("及格人数: " + passCount);
}
}
实际应用:学生成绩统计
Java
public class StudentScoreSystem {
public static void main(String[] args) {
System.out.println("=== 学生成绩统计系统 ===");
// 学生成绩数组
int[] scores = {85, 92, 78, 90, 88, 65, 95, 72, 84, 60};
// 统计
int total = 0;
int maxScore = scores[0];
int minScore = scores[0];
int passCount = 0;
for (int score : scores) {
// 累加总分
total += score;
// 找最高分
if (score > maxScore) {
maxScore = score;
}
// 找最低分
if (score < minScore) {
minScore = score;
}
// 统计及格人数
if (score >= 60) {
passCount++;
}
}
// 计算结果
double average = (double) total / scores.length;
// 输出结果
System.out.println("学生人数: " + scores.length);
System.out.println("总分: " + total);
System.out.println("平均分: " + String.format("%.2f", average));
System.out.println("最高分: " + maxScore);
System.out.println("最低分: " + minScore);
System.out.println("及格人数: " + passCount);
System.out.println("不及格人数: " + (scores.length - passCount));
// 成绩分布
System.out.println("\n=== 成绩分布 ===");
System.out.println("优秀(90-100):");
for (int score : scores) {
if (score >= 90) {
System.out.print(score + " ");
}
}
System.out.println("\n良好(80-89):");
for (int score : scores) {
if (score >= 80 && score < 90) {
System.out.print(score + " ");
}
}
}
}
无限循环:小心这个"陷阱"!
Java
public class InfiniteLoop {
public static void main(String[] args) {
System.out.println("=== 无限循环(不要这样做!)===");
// ❌ 错误的例子:忘记更新循环变量
// int i = 1;
// while (i <= 5) {
// System.out.println(i);
// // 忘记写 i++,会无限循环!
// }
// ❌ 错误的例子:条件永远为真
// while (true) {
// System.out.println("永远执行");
// }
// ✅ 正确的做法:确保循环能结束
System.out.println("正确的循环:");
int i = 1;
while (i <= 5) {
System.out.println(i);
i++; // 不要忘记这个!
}
}
}
对比总结
| 循环类型 | 适用场景 | 特点 |
|---|---|---|
for |
知道循环次数 | 结构紧凑,最常用 |
while |
不确定循环次数 | 先判断,后执行 |
do-while |
至少执行一次 | 先执行,后判断 |
记住这三点就够了:
- for循环 → 当你知道要重复多少次时用
- while循环 → 当你不知道要重复多少次时用
- 注意退出条件 → 确保循环能正常结束