2025-11-25 Java程序三大控制结构详解:顺序选择与循环实现

**Java程序三大控制结构详解:顺序选择与循环实现**

任何复杂的Java程序都由三种基本控制结构构建而成:顺序结构、选择结构和循环结构。这些结构构成了程序执行的逻辑框架,理解它们的特性和应用场景是掌握Java编程的基础。

### 顺序结构:程序执行的基础

顺序结构是程序中最简单的控制结构,代码按照书写顺序从上到下依次执行,每条语句执行一次。

```java

public class SequentialStructure {


    public static void main(String[] args) {

        // 顺序结构示例:数据处理的完整流程

        System.out.println("=== 学生成绩处理系统 ===");


        // 第一步:输入数据

        String studentName = "张三";

        int mathScore = 85;

        int englishScore = 92;

        int scienceScore = 78;


        System.out.println("学生姓名:" + studentName);

        System.out.println("数学成绩:" + mathScore);

        System.out.println("英语成绩:" + englishScore);

        System.out.println("科学成绩:" + scienceScore);


        // 第二步:计算总分和平均分

        int totalScore = mathScore + englishScore + scienceScore;

        double averageScore = totalScore / 3.0;


        System.out.println("总分:" + totalScore);

        System.out.println("平均分:" + String.format("%.2f", averageScore));


        // 第三步:输出处理结果

        System.out.println("=== 处理完成 ===");

    }


    // 方法调用的顺序执行

    public static void processOrder() {

        System.out.println<"GN.9134.HK">("开始处理订单...");


        // 顺序执行各个处理步骤

        validateOrder();

        calculateTotal();

        applyDiscount();

        processPayment();

        generateInvoice();


        System.out.println("订单处理完成");

    }


    public static void validateOrder() {

        System.out.println("验证订单信息");

    }


    public static void calculateTotal() {

        System.out.println("计算订单总额");

    }


    public static void applyDiscount() {

        System.out.println("应用折扣");

    }


    public static void processPayment() {

        System.out.println("处理支付");

    }


    public static void generateInvoice() {

        System.out.println("生成发票");

    }

}

```

### 选择结构:程序的分支决策

选择结构允许程序根据条件判断选择不同的执行路径,主要包括if语句和switch语句。

**if语句系列**

```java

public class SelectionStructure {


    // 简单的if语句

    public static void checkPassingGrade(int score) {

        System.out.println("检查成绩:" + score);


        if (score >= 60) {

            System.out.println("成绩合格");

        }


        System.out.println("检查完成");

    }


    // if-else语句

    public static void checkNumberSign(int number) {

        System.out.println("检查数字:" + number);


        if (number > 0) {

            System.out.println("正数");

        } else if (number < 0) {

            System.out.println("负数");

        } else {

            System.out.println("零");

        }

    }


    // 嵌套if语句

    public static void evaluateStudentGrade(int score, int attendance) {

        System.out.println("评估学生:成绩=" + score + ", 出勤率=" + attendance + "%");


        if (attendance >= 80) {

            if (score >= 90) {

                System.out.println("优秀学生");

            } else if (score >= 70) {

                System.out.println("良好学生");

            } else if (score >= 60) {

                System.out.println("合格学生");

            } else {

                System.out.println("需要改进学习");

            }

        } else {

            System.out.println("出勤率不足,需要关注");

        }

    }


    // 复杂的条件判断

    public static void checkLoanEligibility(int age, double income, boolean hasJob) {

        System.out.println("贷款资格检查:年龄=" + age + ", 收入=" + income + ", 有工作=" + hasJob);


        if (age >= 18 && age <= 65) {

            if (hasJob && income >= 3000) {

                System.out.println("符合贷款条件,可申请高额度贷款");

            } else if (hasJob && income >= 2000) {

                System.out.println("符合贷款条件,可申请标准贷款");

            } else if (income >= 5000) {

                System.out.println("符合贷款条件,可申请基础贷款");

            } else {

                System.out.println("收入条件不符合要求");

            }

        } else {

            System.out.println("年龄不符合要求");

        }

    }


    public static void main(String[] args) <"4F.2597.HK">{

        checkPassingGrade(75);

        checkNumberSign(-5);

        evaluateStudentGrade(85, 90);

        checkLoanEligibility(25, 4000, true);

    }

}

```

**switch语句**

```java

public class SwitchStructure {


    // 基本的switch语句

    public static void getWeekdayName(int day) {

        System.out.print("星期" + day + ":");


        switch (day) {

            case 1:

                System.out.println("星期一");

                break;

            case 2:

                System.out.println("星期二");

                break;

            case 3:

                System.out.println("星期三");

                break;

            case 4:

                System.out.println("星期四");

                break;

            case 5:

                System.out.println("星期五");

                break;

            case 6:

                System.out.println("星期六");

                break;

            case 7:

                System.out.println("星期日");

                break;

            default:

                System.out.println("无效的星期数");

        }

    }


    // 多个case合并的switch

    public static String getSeason(int month) {

        System.out.print(month + "月属于:");


        switch (month) {

            case 12:

            case 1:

            case 2:

                return "冬季";

            case 3:

            case 4:

            case 5:

                return "春季";

            case 6:

            case 7:

            case 8:

                return "夏季";

            case 9:

            case 10:

            case 11:

                return "秋季";

            default:

                return "无效月份";

        }

    }


    // Java 12+ 的switch表达式

    public static void modernSwitchExample() {

        int score = 85;


        String grade = switch (score / 10) {

            case 10, 9 -> "A";

            case 8 -> "B";

            case 7 -> "C";

            case 6 -> "D";

            default -> "F";

        };


        System.out.println("分数:" + score + ",等级:" + grade);

    }


    // 复杂的switch应用

    public static void processUserCommand(String command) {

        System.out.println("处理命令:" + command);


        switch (command.toLowerCase()) {

            case "start":

                System.out.println("启动系统...");

                initializeSystem();

                break;

            case "stop":

                System.out.println("停止系统...");

                shutdownSystem();

                break;

            case "restart":

                System.out.println("重启系统...");

                shutdownSystem();

                initializeSystem();

                break;

            case "status":

                System.out.println("系统状态:运行中");

                break;

            default:

                System.out.println("未知命令");

                showHelp();

        }

    }


    public static void initializeSystem() {

        System.out.println("系统初始化完成");

    }


    public static void shutdownSystem() {

        System.out.println("系统关闭完成");

    }


    public static void showHelp() {

        System.out.println("可用命令:start, stop, restart, status");

    }


    public static void main(String[] args) {

        getWeekdayName(3);

        System.out.println(getSeason(7));

        modernSwitchExample();

        processUserCommand("start");

    }

}

```

### 循环结构:重复执行的利器

循环结构用于重复执行特定代码块,主要包括for、while和do-while循环。

**for循环**

```java

public class ForLoopStructure {


    // 基本的for循环

    public static void printMultiplicationTable(int n) {

        System.out.println(n + "的乘法表:");


        for (int i = 1; i <= 10; i++) {

            int result = n * i;

            System.out.println(n + " × " + i + " = " + result);

        }

    }


    // 嵌套for循环

    public static void printAllMultiplicationTables() {

        System.out.println("完整的乘法表:");


        for (int i = 1; i <= 9; i++) {

            System.out.println("=== " + i + "的乘法表 ===");

            for (int j = 1; j <= 9; j++) {

                System.out.println(i + " × " + j + " = " + (i * j));

            }

            System.out.println();

        }

    }


    // 数组遍历的for循环

    public static void processStudentScores(int[] scores) {

        System.out.println("处理学生成绩数组:");


        int sum = 0;

        int maxScore = Integer.MIN_VALUE;

        int minScore = Integer.MAX_VALUE;


        for (int i = 0; i < scores.length; i++) <"HX.4961.HK">{

            int score = scores[i];

            System.out.println("学生" + (i + 1) + "成绩:" + score);


            sum += score;

            if (score > maxScore) {

                maxScore = score;

            }

            if (score < minScore) {

                minScore = score;

            }

        }


        double average = (double) sum / scores.length;

        System.out.println("总分:" + sum);

        System.out.println("平均分:" + String.format("%.2f", average));

        System.out.println("最高分:" + maxScore);

        System.out.println("最低分:" + minScore);

    }


    // 增强for循环

    public static void processWithEnhancedFor(String[] names) {

        System.out.println("学生名单:");


        for (String name : names) {

            System.out.println("学生:" + name);

        }

    }


    public static void main(String[] args) {

        printMultiplicationTable(7);


        int[] scores = {85, 92, 78, 96, 88, 76};

        processStudentScores(scores);


        String[] students = {"张三", "李四", "王五", "赵六"};

        processWithEnhancedFor(students);

    }

}

```

**while和do-while循环**

```java

public class WhileLoopStructure {


    // while循环:先判断后执行

    public static void countdown(int start) {

        System.out.println("倒计时开始:");


        int current = start;

        while (current > 0) {

            System.out.println(current + "...");

            current--;

        }

        System.out.println("开始!");

    }


    // do-while循环:先执行后判断

    public static void processUserInput() {

        Scanner scanner = new Scanner(System.in);

        int number;


        do {

            System.out.print("请输入一个正数(输入0退出):");

            number = scanner.nextInt();


            if (number > 0) {

                System.out.println("你输入的是:" + number);

                System.out.println("平方是:" + (number * number));

            }

        } while (number != 0);


        System.out.println("程序结束");

        scanner.close();

    }


    // 复杂的while循环应用

    public static void simulateGame() {

        Random random = new Random();

        int playerHealth = 100;

        int enemyHealth = 80;

        int turn = 1;


        System.out.println("游戏开始!");


        while (playerHealth > 0 && enemyHealth > 0) {

            System.out.println("\n=== 第" + turn + "回合 ===");


            // 玩家攻击

            int playerAttack = random.nextInt(20) + 10;

            enemyHealth -= playerAttack;

            System.out.println("玩家造成 " + playerAttack + " 点伤害");

            System.out.println("敌人剩余生命值:" + Math.max(0, enemyHealth));


            if (enemyHealth <= 0) {

                System.out.println("玩家胜利!");

                break;

            }


            // 敌人攻击

            int enemyAttack = random.nextInt(15) + 5;

            playerHealth -= enemyAttack;

            System.out.println("敌人造成 " + enemyAttack + " 点伤害");

            System.out.println("玩家剩余生命值:" + Math.max(0, playerHealth));


            if (playerHealth <= 0) {

                System.out.println("敌人胜利!");

                break;

            }


            turn++;

        }

    }


    public static void main(String[] args) {

        countdown(5);

        simulateGame();

        // processUserInput(); // 取消注释可以测试用户输入功能

    }

}

```

### 控制结构的综合应用

```java

public class ComprehensiveExample {


    // 综合应用:学生成绩管理系统

    public static void studentGradeManagement() {

        Scanner scanner = new Scanner(System.in);

        List<Student> students = new ArrayList<>();


        // 数据输入循环

        while (true) {

            System.out.println("\n=== 学生成绩管理系统 ===");

            System.out.println("1. 添加学生");

            System.out.println("2. 查看所有学生");

            System.out.println("3. 统计成绩");

            System.out.println("4. 退出系统");

            System.out.print("请选择操作:");


            int choice = scanner.nextInt();

            scanner.nextLine(); // 消耗换行符


            // 选择结构处理用户输入

            switch (choice) {

                case 1:

                    addStudent(scanner, students);

                    break;

                case 2:

                    displayAllStudents(students);

                    break;

                case 3:

                    analyzeGrades(students);

                    break;

                case 4:

                    System.out.println<"SW.0746.HK">("系统退出");

                    return;

                default:

                    System.out.println("无效选择,请重新输入");

            }

        }

    }


    static class Student {

        String name;

        int math;

        int english;

        int science;


        Student(String name, int math, int english, int science) {

            this.name = name;

            this.math = math;

            this.english = english;

            this.science = science;

        }


        int getTotal() {

            return math + english + science;

        }


        double getAverage() {

            return getTotal() / 3.0;

        }


        String getGrade() {

            double avg = getAverage();

            if (avg >= 90) return "A";

            else if (avg >= 80) return "B";

            else if (avg >= 70) return "C";

            else if (avg >= 60) return "D";

            else return "F";

        }

    }


    public static void addStudent(Scanner scanner, List<Student> students) {

        System.out.print("请输入学生姓名:");

        String name = scanner.nextLine();


        System.out.print("数学成绩:");

        int math = scanner.nextInt();


        System.out.print("英语成绩:");

        int english = scanner.nextInt();


        System.out.print("科学成绩:");

        int science = scanner.nextInt();


        students.add(new Student(name, math, english, science));

        System.out.println("学生添加成功!");

    }


    public static void displayAllStudents(List<Student> students) {

        if (students.isEmpty()) {

            System.out.println("没有学生记录");

            return;

        }


        System.out.println("\n所有学生成绩:");

        System.out.println("姓名\t数学\t英语\t科学\t总分\t平均分\t等级");


        // 循环遍历所有学生

        for (Student student : students) {

            System.out.printf("%s\t%d\t%d\t%d\t%d\t%.1f\t%s%n",

                    student.name, student.math, student.english,

                    student.science, student.getTotal(),

                    student.getAverage(), student.getGrade());

        }

    }


    public static void analyzeGrades(List<Student> students) {

        if (students.isEmpty()) {

            System.out.println("没有学生记录");

            return;

        }


        int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;

        int totalMath = 0, totalEnglish = 0, totalScience = 0;


        // 循环统计各项数据

        for (Student student : students) {

            // 选择结构统计等级分布

            switch (student.getGrade()) {

                case "A": aCount++; break;

                case "B": bCount++; break;

                case "C": cCount++; break;

                case "D": dCount++; break;

                case "F": fCount++; break;

            }


            totalMath += student.math;

            totalEnglish += student.english;

            totalScience += student.science;

        }


        // 顺序结构输出统计结果

        System.out.println("\n成绩统计分析:");

        System.out.println("A等级人数:" + aCount);

        System.out.println("B等级人数:" + bCount);

        System.out.println("C等级人数:" + cCount);

        System.out.println("D等级人数:" + dCount);

        System.out.println("F等级人数:" + fCount);


        System.out.println("数学平均分:" + (double)totalMath / students.size());

        System.out.println("英语平均分:" + (double)totalEnglish / students.size());

        System.out.println("科学平均分:" + (double)totalScience / students.size());

    }


    public static void main(String[] args) {

        studentGradeManagement<"YQ.8412.HK">();

    }

}

```

### 总结

Java的三种基本控制结构各有其独特的作用:

1. **顺序结构**是程序的基础,确保代码按逻辑顺序执行

2. **选择结构**提供决策能力,让程序能够根据不同条件执行不同路径

3. **循环结构**实现重复执行,提高代码的复用性和效率

在实际编程中,这三种结构往往相互嵌套、配合使用。掌握它们的特性和适用场景,能够帮助开发者编写出结构清晰、逻辑严谨、易于维护的Java程序。理解这些基础控制结构的工作原理,是学习更复杂编程概念和设计模式的重要前提。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容