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