模拟向货船上运用贪心算法装载货物,如果货船装载某一货物后超重,那么货船认为这是一个异常,将拒绝装载该货物,但无论是否发生异常,货船都会在三点启航。货物数量为5,将货物放置在数组中,货物重量自定义,货船最大载重1000,其中包含两个类(分别是异常类:用于在超载是报出异常,货船装载:包含货物名称与重量、已装载货物的列表、当前载重以及货船最大载重三个属性,以及装载货物和启航两个方法)和一个主类,无需判断货物是否重复,但要在最后输出当前装载总重,之后再把五件货物逐一进行输出(包含名称和重量),使用try-catch语句,最后使用finially输出“货船在三点启航”java编程
时间: 2023-12-05 15:03:12 浏览: 37
好的,这是Java语言的代码实现:
```java
import java.util.ArrayList;
import java.util.List;
class OverweightException extends Exception {
public OverweightException(String message) {
super(message);
}
}
class Ship {
private List<String> cargoList = new ArrayList<>();
private int currentWeight = 0;
private final int maxWeight = 1000;
public void loadCargo(String name, int weight) throws OverweightException {
if (currentWeight + weight > maxWeight) {
throw new OverweightException("货物超重,无法装载!");
}
cargoList.add(name);
currentWeight += weight;
}
public void sail() {
System.out.println("货船在三点启航!");
}
public int getCurrentWeight() {
return currentWeight;
}
public void displayCargoList() {
for (String cargo : cargoList) {
System.out.println(cargo);
}
}
}
public class Main {
public static void main(String[] args) {
Ship ship = new Ship();
String[] cargoNames = {"货物1", "货物2", "货物3", "货物4", "货物5"};
int[] cargoWeights = {200, 300, 400, 500, 600};
int totalWeight = 0;
try {
for (int i = 0; i < cargoNames.length; i++) {
ship.loadCargo(cargoNames[i], cargoWeights[i]);
totalWeight += cargoWeights[i];
}
} catch (OverweightException e) {
System.out.println(e.getMessage());
} finally {
ship.sail();
System.out.println("当前装载总重为:" + totalWeight);
System.out.println("货物清单:");
ship.displayCargoList();
}
}
}
```
这段代码中定义了一个 `Ship` 类,其中包含了 `loadCargo` 和 `sail` 两个方法,分别用于装载货物和启航。在 `loadCargo` 方法中,使用了自定义的异常类 `OverweightException`,用于在超载时报出异常。在主类中,定义了5个货物名称和重量,并使用 `try-catch` 语句进行装载货物,如果装载过程中出现异常,则输出异常信息,否则输出当前装载总重和货物清单,并调用 `sail` 方法启航。