自定义一个异常类OverLoadException(超载异常),它是Exception的子类,有一个成员变量message(消息,String类型),有一个带参数的构造方法public OverLoadException(double n),使得message的值为“无法再装载重量是XXX吨的集装箱”,其中XXX为参数n的值。有一个公有的成员方法showMessage(),功能为输出message的值。 定义一个类CargoShip(货船),有成员变量actualWeight(实际装载量,double类型,初始值为0)、maxWeight(最大装载量,double类型);有公有的成员方法setMaxWeight()用于设置maxWeight的值;公有的成员方法void loading(double weight)的功能是给货船加载weight吨的集装箱。但是根据参数weight的值,该方法可能会抛出超载异常,如果装载后实际重量没有超过最大装载量,则实际装载量增加,并输出“目前共装载了XXX吨货物”,其中XXX为actualWeight的值,否则抛出一个OverLoadException异常对象。 在测试类Main中,定义一个CargoShip类的对象myship,从键盘输入一个数,用于设置其最大装载量。从键盘再输入两个数,作为两个集装箱的重量,尝试将这两个集装箱按输入时的顺序先后装上货船,该操作有可能捕捉到超载异常,一旦捕捉到该异常,则调用showMessage()方法输出异常提示。不管是否有异常,最终输出“货船将正点起航”。使用try...catch...finally语句实现上述功能。
时间: 2023-06-27 14:04:06 浏览: 450
代码实现如下:
```
class OverLoadException extends Exception {
private String message;
public OverLoadException(double n) {
this.message = "无法再装载重量是" + n + "吨的集装箱";
}
public void showMessage() {
System.out.println(message);
}
}
class CargoShip {
private double actualWeight = 0;
private double maxWeight;
public void setMaxWeight(double maxWeight) {
this.maxWeight = maxWeight;
}
public void loading(double weight) throws OverLoadException {
if (actualWeight + weight > maxWeight) {
throw new OverLoadException(weight);
} else {
actualWeight += weight;
System.out.println("目前共装载了" + actualWeight + "吨货物");
}
}
}
class Main {
public static void main(String[] args) {
CargoShip myship = new CargoShip();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入货船的最大装载量:");
double maxWeight = scanner.nextDouble();
myship.setMaxWeight(maxWeight);
System.out.print("请输入第一个集装箱的重量:");
double weight1 = scanner.nextDouble();
try {
myship.loading(weight1);
} catch (OverLoadException e) {
e.showMessage();
}
System.out.print("请输入第二个集装箱的重量:");
double weight2 = scanner.nextDouble();
try {
myship.loading(weight2);
} catch (OverLoadException e) {
e.showMessage();
} finally {
System.out.println("货船将正点起航");
}
}
}
```
运行结果示例:
```
请输入货船的最大装载量:100
请输入第一个集装箱的重量:80
目前共装载了80.0吨货物
请输入第二个集装箱的重量:30
无法再装载重量是30.0吨的集装箱
货船将正点起航
```
阅读全文