Java中基于分支和循环结构的专项实验

一、分支结构(if-else、switch)实验场景

 

1. 数据校验与条件处理

 

- 场景:用户输入合法性检查(如成绩范围、年龄有效性)。

- 示例:判断学生成绩等级

int score = 85;

String grade;

if (score >= 90) {

    grade = "A";

} else if (score >= 80) {

    grade = "B";

} else if (score >= 70) {

    grade = "C";

} else if (score >= 60) {

    grade = "D";

} else {

    grade = "E"; // 不及格

}

System.out.println("成绩等级:" + grade);

 

- 扩展:用 switch 优化多条件判断(适用于离散值,如月份、星期)。

 

2. 业务逻辑分支控制

 

- 场景:学生管理系统中的功能菜单选择

Scanner scanner = new Scanner(System.in);

System.out.println("请选择操作:1-添加学生 2-查询学生 3-退出");

int choice = scanner.nextInt();

 

switch (choice) {

    case 1:

        System.out.println("执行添加学生操作");

        break;

    case 2:

        System.out.println("执行查询学生操作");

        break;

    case 3:

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

        break;

    default:

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

}

 

 

二、循环结构(for、while、do-while)实验场景

 

1. 数据遍历与累加计算

 

- 场景:计算学生成绩平均分

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

int sum = 0;

for (int i = 0; i < scores.length; i++) {

    sum += scores[i];

}

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

System.out.println("平均分:" + average);

 

- 增强for循环:更简洁地遍历数组或集合

for (int score : scores) {

    sum += score;

}

 

 

2. 交互式循环输入

 

- 场景:循环接收用户输入,直到输入合法数据

Scanner scanner = new Scanner(System.in);

int age = 0;

boolean valid = false;

 

while (!valid) {

    System.out.println("请输入年龄(18-60岁):");

    if (scanner.hasNextInt()) {

        age = scanner.nextInt();

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

            valid = true;

        } else {

            System.out.println("年龄超出范围,请重新输入");

        }

    } else {

        System.out.println("输入必须是数字,请重新输入");

        scanner.next(); // 清空错误输入

    }

}

System.out.println("合法年龄:" + age);

 

 

3. 穷举与迭代求解(算法基础)

 

- 场景:计算阶乘(5! = 5×4×3×2×1)

int n = 5;

int factorial = 1;

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

    factorial *= i;

}

System.out.println(n + "的阶乘:" + factorial);

 

- 场景:斐波那契数列(1, 1, 2, 3, 5...)

int n = 10; // 求前10项

int a = 1, b = 1;

System.out.print(a + " " + b + " ");

 

for (int i = 3; i <= n; i++) {

    int c = a + b;

    System.out.print(c + " ");

    a = b;

    b = c;

}

 

 

三、分支与循环结合的综合实验

 

1. 学生成绩管理系统(简化版)

 

- 需求:循环显示菜单,根据用户选择执行不同操作(添加成绩、计算平均分、退出)。

- 实现:

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

public class ScoreManager {

    public static void main(String[] args) {

        List<Integer> scores = new ArrayList<>();

        Scanner scanner = new Scanner(System.in);

        boolean running = true;

 

        while (running) {

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

            System.out.println("1. 添加成绩");

            System.out.println("2. 显示平均分");

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

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

 

            int choice = scanner.nextInt();

            switch (choice) {

                case 1:

                    System.out.print("输入成绩(0-100):");

                    int score = scanner.nextInt();

                    if (score >= 0 && score <= 100) {

                        scores.add(score);

                        System.out.println("成绩添加成功");

                    } else {

                        System.out.println("成绩无效,请输入0-100之间的数");

                    }

                    break;

                case 2:

                    if (scores.isEmpty()) {

                        System.out.println("暂无成绩数据");

                    } else {

                        int sum = 0;

                        for (int s : scores) {

                            sum += s;

                        }

                        double avg = (double) sum / scores.size();

                        System.out.println("平均分:" + avg);

                    }

                    break;

                case 3:

                    running = false;

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

                    break;

                default:

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

            }

        }

        scanner.close();

    }

}

 

 

2. 猜数字游戏(分支+循环+随机数)

 

- 需求:计算机生成1-100的随机数,用户循环猜数,根据提示(“大了”“小了”)调整,直到猜中。

- 实现关键点:

int target = new Random().nextInt(100) + 1; // 生成1-100的随机数

int guess;

Scanner scanner = new Scanner(System.in);

 

do {

    System.out.print("请猜一个1-100的数字:");

    guess = scanner.nextInt();

 

    if (guess > target) {

        System.out.println("猜大了!");

    } else if (guess < target) {

        System.out.println("猜小了!");

    } else {

        System.out.println("恭喜猜中了!");

    }

} while (guess != target);

 

 

四、实验中常见问题与技巧

 

1. 循环终止条件:避免死循环(如 while(true) 需配合 break 退出)。

2. 分支顺序:if-else分支按优先级排序(如先判断特殊情况,再处理常规情况)。

3. 输入处理:使用 try-catch 处理非法输入(如非数字输入),或配合 hasNextInt() 等方法校验。

4. 嵌套结构:避免多层嵌套(如循环中套循环),若逻辑复杂可封装为方法。

 

通过分支和循环的组合,可实现从简单数据处理到复杂业务逻辑的控制。在实验中,建议从单一结构练习开始(如单独使用for循环遍历数组),再逐步过渡到综合场景(如菜单驱动的交互式系统),理解如何用逻辑控制流解决实际问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值