Java循环:让代码重复工作的"魔法"

循环就是让计算机重复执行一段代码的能力

三种循环

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 至少执行一次 先执行,后判断

记住这三点就够了:

  1. for循环 → 当你知道要重复多少次时用
  2. while循环 → 当你不知道要重复多少次时用
  3. 注意退出条件 → 确保循环能正常结束
相关推荐
青云交1 小时前
Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用
java·智能停车·故障预测·极端气候适配·车位共享·民生应用·政企协同
從南走到北1 小时前
JAVA代驾小程序源码代驾跑腿APP源码
java·开发语言·微信·微信小程序·小程序
李贺梖梖2 小时前
day01 Java概述、IDEA安装、Java基础语法
java
urkay-2 小时前
Android getDrawingCache 过时废弃
android·java·开发语言·kotlin·iphone·androidx
CoderYanger2 小时前
C.滑动窗口-求子数组个数-越短越合法——3258. 统计满足 K 约束的子字符串数量 I
java·开发语言·算法·leetcode·1024程序员节
张较瘦_2 小时前
Spring Boot | 学习Spring Boot 3要有哪些Java基础?
java·spring boot·学习
X***C8622 小时前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
阿宁又菜又爱玩2 小时前
Mybatis学习
java·学习·mybatis
幽络源小助理2 小时前
《已调试》SpringBoot景区寄存管理系统源码 - 免费JavaWeb项目下载 | 幽络源
java·开发语言·spring boot