### 问题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 小助理,如未能正确解答您的问题,请继续追问。 |