做个开心的码农 发表于 2024-11-7 08:02:45

java

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 部分处理危险品。

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: java