У нас есть практический тест на Java о магазине IceCream.Мы должны обрабатывать исключения в случае, если больше нет запасов.Код из приложения ниже работает нормально.Исключения обрабатываются должным образом.
public class IceCreamApp2 {
public static void main(String[] args) {
Prijslijst priceList2 = new Prijslijst(2, 5, 8);
Stock stock = new Stock(1, 8, 2, 1);
IceCreamCar iceCar = new IceCreamCar(priceList2, stock);
try {
Eatable[] eatCar = {
iceCar.orderCone(new Cone.Flavor[]{Cone.Flavor.CHOCOLATE, Cone.Flavor.BANANA, Cone.Flavor.VANILLA}),
iceCar.orderCone(new Cone.Flavor[]{Cone.Flavor.VANILLA, Cone.Flavor.VANILLA}),
iceCar.orderMagnum(Magnum.MagnumType.ROMANTICSTRAWBERRIES),
iceCar.orderMagnum(Magnum.MagnumType.ALPINENUTS),
iceCar.orderIceRocket()
};
for (int i = 0; i < eatCar.length; i++) {
eatCar[i].eat();
}
System.out.println(iceCar.getProfit());
} catch (NoMoreIceCreamException noMoreIce) {
System.out.println("No More Ice To sell... Beat it!!");
System.out.println("Message: " + noMoreIce.getMessage());
System.out.println("Cause: " + noMoreIce.getCause());
}
System.out.println(iceCar.getProfit());
}
}
Однако эта логика ошибочна, так как при появлении исключения она перестает считать остаток порядка.Поэтому Magnums и Icerockets, несмотря на то, что они есть в наличии, не учитываются в прибыли.Для этого мы знаем, что нам нужно перебрать таблицу «Eatable».Но он не работает и завершает работу с кодом 1, за исключением:
public class IceCreamApp2 {
public static void main(String[] args) {
Prijslijst priceList2 = new Prijslijst(2, 5, 8);
Stock stock = new Stock(1, 8, 2, 1);
IceCreamCar iceCar = new IceCreamCar(priceList2, stock);
Eatable[] eatCar = {
iceCar.orderCone(new Cone.Flavor[]{Cone.Flavor.CHOCOLATE, Cone.Flavor.BANANA, Cone.Flavor.VANILLA}),
iceCar.orderCone(new Cone.Flavor[]{Cone.Flavor.VANILLA, Cone.Flavor.VANILLA}),
iceCar.orderMagnum(Magnum.MagnumType.ROMANTICSTRAWBERRIES),
iceCar.orderMagnum(Magnum.MagnumType.ALPINENUTS),
iceCar.orderIceRocket()
};
for (int i = 0; i < eatCar.length; i++) {
try {
eatCar[i].eat();
} catch (NoMoreIceCreamException noMoreIce) {
System.out.println("No More Ice To sell... Beat it!!");
System.out.println("Message: " + noMoreIce.getMessage());
System.out.println("Cause: " + noMoreIce.getCause());
}
}
System.out.println(iceCar.getProfit());
}
}
Любая подсказка, что может быть не так?