创建一份某餐馆的菜单,包含-些菜品(FoodMenu类);再创建一份朋友圈里有人不喜欢吃的菜的名单(DislikedFoodMenu)。 实现一个为大家点菜的功能,点菜时如遇到DislikedFoodMenu中的菜品,则抛出自定义BadoodException异常
时间: 2023-08-31 17:43:41 浏览: 70
### 回答1:
好的,您想要创建一个菜单,包括一些菜品,并创建一个不喜欢的菜品列表。然后实现一个点菜功能,当订单中包括不喜欢的菜品时,抛出自定义的异常。
这可以用以下Java代码来实现:
```
import java.util.ArrayList;
import java.util.List;
class Food {
private String name;
private float price;
public Food(String name, float price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public float getPrice() {
return price;
}
@Override
public String toString() {
return name + " - $" + price;
}
}
class FoodMenu {
private List<Food> menu;
public FoodMenu() {
menu = new ArrayList<>();
}
public void addFood(Food food) {
menu.add(food);
}
public List<Food> getMenu() {
return menu;
}
public String toString() {
StringBuilder sb = new StringBuilder();
for (Food food : menu) {
sb.append(food.toString()).append("\n");
}
return sb.toString();
}
}
class DislikedFoodMenu {
private List<String> dislikedFoods;
public DislikedFoodMenu() {
dislikedFoods = new ArrayList<>();
}
public void addDislikedFood(String food) {
dislikedFoods.add(food);
}
public boolean isDisliked(String food) {
return dislikedFoods.contains(food);
}
}
class BadFoodException extends Exception {
public BadFoodException(String message) {
super(message);
}
}
public class RestaurantOrderingSystem {
public static void main(String[] args) {
// Create some sample data
FoodMenu menu = new FoodMenu();
menu.addFood(new Food("Fried Rice", 10.0f));
menu.addFood(new Food("Kung Pao Chicken", 12.0f));
menu.addFood(new Food("Beef Noodle Soup", 8.0f));
menu.addFood(new Food("Egg Roll", 4.0f));
DislikedFoodMenu dislikedFoods = new DislikedFoodMenu();
dislikedFoods.addDislikedFood("Beef Noodle Soup");
dislikedFoods.addDislikedFood("Egg Roll");
// Test the menu
System.out.println("Menu:");
System.out.println(menu);
// Test the disliked food list
System.out.println("Disliked Food List:");
System.out.println(dislikedFoods);
// Take orders
List<Food> order = new ArrayList<>();
order.add(menu.getMenu().get(0)); // Fried Rice
order.add(menu.getMenu().get(1)); // Kung Pao Chicken
order.add(menu.getMenu().get(2)); // Beef Noodle Soup
order.add(menu.getMenu().get(3)); // Egg Roll
try {
for (Food food : order) {
if (dislikedFoods.isDisliked(food.getName())) {
throw new BadFoodException(food.getName() + " is disliked!");
}
}
System.out.println("Order successful!");
} catch (BadFoodException e) {
System.out.println("Order failed: " + e.getMessage());
}
}
}
```
在这个例子中,我们创建了一个`Food`类来存储菜品的名称和价格。我们还创建了一个`FoodMenu`类来存储所有的菜品,并提供了一个`toString()`方法来将菜单转换为字符串以便打印。
我们还创建了一个`DislikedFoodMenu`类来存储不喜欢的菜品列表,以及一个`BadFoodException`异常,用于在点菜时出现不喜欢的菜品时抛出。
在`RestaurantOrderingSystem`的`main()`方法中,我们创建了一个菜单和一个不喜欢的菜品列表,并创建了一个订单,包括喜欢和不喜欢的菜品。我们遍历订单,并使用`isDisliked()`方法检查每个菜品是否在不喜欢的菜品列表中。
如果存在不喜欢的菜品,我们就抛出一个`BadFoodException`异常,否则我们就打印一个“订单成功”的消息。
### 回答2:
首先,我们可以创建一个FoodMenu类来表示餐馆的菜单,该类包含菜名和价格等属性。下面是一个示例代码:
```java
public class FoodMenu {
private String dishName;
private double price;
public FoodMenu(String dishName, double price) {
this.dishName = dishName;
this.price = price;
}
// Getters and setters
public String getDishName() {
return dishName;
}
public void setDishName(String dishName) {
this.dishName = dishName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
```
接下来,我们可以创建一个DislikedFoodMenu类来表示朋友圈里有人不喜欢吃的菜的名单。这个类可以继承自FoodMenu类,并添加一个额外的属性来标记不喜欢的原因。下面是一个示例代码:
```java
public class DislikedFoodMenu extends FoodMenu {
private String dislikeReason;
public DislikedFoodMenu(String dishName, double price, String dislikeReason) {
super(dishName, price);
this.dislikeReason = dislikeReason;
}
// Getters and setters
public String getDislikeReason() {
return dislikeReason;
}
public void setDislikeReason(String dislikeReason) {
this.dislikeReason = dislikeReason;
}
}
```
最后,我们可以实现一个点菜的功能,当点菜时如果遇到DislikedFoodMenu中的菜品,则抛出自定义的BadFoodException异常。下面是一个示例代码:
```java
public class Main {
public static void main(String[] args) {
// 创建餐馆菜单
FoodMenu menu1 = new FoodMenu("鱼香肉丝", 25.99);
FoodMenu menu2 = new FoodMenu("宫保鸡丁", 22.99);
FoodMenu menu3 = new FoodMenu("回锅肉", 28.99);
// 创建朋友圈不喜欢的菜的名单
DislikedFoodMenu dislikedMenu1 = new DislikedFoodMenu("红烧肉", 32.99, "太油腻");
DislikedFoodMenu dislikedMenu2 = new DislikedFoodMenu("麻辣香锅", 38.99, "太辣");
// 菜单列表
FoodMenu[] menus = {menu1, menu2, menu3};
// 遍历菜单列表并进行点菜
for (FoodMenu menu : menus) {
try {
if (menu instanceof DislikedFoodMenu) {
throw new BadFoodException("不喜欢的菜品:" + menu.getDishName() + ",原因:" + ((DislikedFoodMenu) menu).getDislikeReason());
}
// 点菜操作
System.out.println("点菜成功:" + menu.getDishName());
} catch (BadFoodException e) {
System.out.println("点菜失败:" + e.getMessage());
}
}
}
}
// 自定义的异常类
class BadFoodException extends Exception {
public BadFoodException(String message) {
super(message);
}
}
```
以上是一个简单的实现,当遇到朋友圈里不喜欢的菜时,会抛出BadFoodException异常并输出点菜失败的信息。可以根据实际需求进行扩展和修改。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)