鱼C论坛

 找回密码
 立即注册
查看: 67|回复: 1

java

[复制链接]
发表于 2024-11-7 08:02:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、编写一个程序,输入某个班某门课程成绩,统计及格人数、不及格人数及课程平均分。设计一个异常类,当输入的成绩小于0或者大于100时抛出异常,程序将捕获这个异常,并作出相应处理。

源代码:

实验运行截图:



2、车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。编写一个 Exception 的子类 DangerException,该子类可以创建异常对象,该异常对象调用 toShow()方法输出“属于危险品”。编写一个 Machine 类,该类的方法 checkBag(Goods goods)当发现参数 goods 是危险品时(goods 的 isDanger 属性是 true)将抛出 DangerException 异常。程序在主类的 main()方法中的 try-catch 语句的 try 部分让 Machine 类的实例调用checkBag (Goods goods)方法,如果发现危险品就在 try-catch 语句的 catch 部分处理危险品。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-7 08:09:08 | 显示全部楼层
### 问题1:统计某门课程成绩,处理成绩异常

以下是解决方案,包括自定义异常类和主程序:
import java.util.ArrayList;
import java.util.Scanner;

// 自定义异常类
class InvalidScoreException extends Exception {
    public InvalidScoreException(String message) {
        super(message);
    }
}

public class ScoreStatistics {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Integer> scores = new ArrayList<>();
        int passCount = 0;
        int failCount = 0;
        double totalScore = 0.0;

        System.out.println("请输入成绩,输入负数结束:");

        while (true) {
            int score;
            try {
                score = scanner.nextInt();
                
                if (score < 0) {
                    break; // 输入负数时结束输入
                }
                
                // 检查成绩是否有效
                if (score < 0 || score > 100) {
                    throw new InvalidScoreException("无效的成绩: " + score);
                }
                
                scores.add(score);
                totalScore += score;

                if (score >= 60) {
                    passCount++;
                } else {
                    failCount++;
                }
                
            } catch (InvalidScoreException e) {
                System.out.println(e.getMessage());
            }
        }

        int totalStudents = scores.size();
        double averageScore = totalStudents > 0 ? totalScore / totalStudents : 0;

        System.out.println("及格人数: " + passCount);
        System.out.println("不及格人数: " + failCount);
        System.out.println("平均分: " + averageScore);

        scanner.close();
    }
}

### 问题2:模拟设备发现危险品

以下是异常类和模拟检查危险品程序的代码:
// 定义异常类
class DangerException extends Exception {
    public DangerException() {
        super();
    }

    public void toShow() {
        System.out.println("属于危险品");
    }
}

// 定义 Goods 类
class Goods {
    private boolean isDanger;

    public Goods(boolean isDanger) {
        this.isDanger = isDanger;
    }

    public boolean isDanger() {
        return isDanger;
    }
}

// 定义 Machine 类
class Machine {
    public void checkBag(Goods goods) throws DangerException {
        if (goods.isDanger()) {
            throw new DangerException();
        } else {
            System.out.println("物品安全");
        }
    }
}

// 主类
public class DangerousGoodsChecker {

    public static void main(String[] args) {
        Machine machine = new Machine();
        Goods safeGoods = new Goods(false);
        Goods dangerousGoods = new Goods(true);

        try {
            machine.checkBag(safeGoods);
            machine.checkBag(dangerousGoods);
        } catch (DangerException e) {
            e.toShow();
        }
    }
}

这两个程序通过捕获并处理自定义异常,为程序的健壮性和可读性提供了良好的实践示例。在第一个问题中,程序可以检测输入成绩的有效性,而在第二个问题中,程序能识别并响应危险品检测。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表