如何将Java菜单程序的数字输入转换为菜品名并输出完整订单?
解决Java菜单程序订单输出问题
修改思路
核心是把用户输入的数字转换为对应菜品名称字符串,避免直接对整数进行相加操作。具体步骤:
- 定义字符串变量存储用户选中的各品类菜品名称
- 在处理每个输入的分支逻辑中,将对应菜品名赋值给变量
- 最后按指定格式拼接所有菜品名并输出完整订单
修改后的完整代码
import java.util.Scanner; public class Menu2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String starterMeal[] = { "Garlic Bread", "Lentil Soup", "Prawn Cocktail" }; String mainMeal[] = { "Fish and Chips", "Vegetarian Curry", "Cottage Pie" }; String dessertMeal[] = { "Trio of ice-cream", "Apple Pie", "Cheesecake" }; String drinkMeal[] = { "Tea", "Coffee", "Lemonade" }; double starterPrice[] = { 4.50, 4.99, 9.99 }; double mainPrice[] = { 12.50, 9.90, 11.50 }; double dessertPrice[] = { 4.50, 3.50, 2.50 }; double drinkPrice[] = { 2.99, 3.50, 2.50 }; // 存储用户选中的菜品名称 String selectedStarter = ""; String selectedMain = ""; String selectedDessert = ""; String selectedDrink = ""; // 询问顾客姓名并欢迎 System.out.println("Hello, can you tell me your name? "); String name = scanner.nextLine(); System.out.println("Hello, " + name + ", welcome to our cafe!"); // 展示完整菜单 System.out.println("Here is the full menu: "); System.out.println(); System.out.println("\tStarters: "); System.out.println("1. Garlic Bread £4.50"); System.out.println("2. Lentil Soup £4.99"); System.out.println("3. Prawn Cocktail £9.99"); System.out.println(); System.out.println("\tMain Meals: "); System.out.println("4. Fish and Chips £12.50"); System.out.println("5. Vegetarian Curry £9.90"); System.out.println("6. Cottage Pie £11.50"); System.out.println(); System.out.println("\tDesserts: "); System.out.println("7. Trio of ice-cream £4.50"); System.out.println("8. Apple Pie £5.20"); System.out.println("9. Cheesecake £6.50"); System.out.println(); System.out.println("\tDrinks: "); System.out.println("10. Tea £2.99"); System.out.println("11. Coffee £3.50"); System.out.println("12. Lemonade £2.50"); System.out.println(); // 处理前菜选择 System.out.println("What would you like for starters? "); int custStarter = scanner.nextInt(); if (custStarter == 1) { selectedStarter = starterMeal[0]; System.out.println(selectedStarter + " £" + starterPrice[0]); } else if (custStarter == 2) { selectedStarter = starterMeal[1]; System.out.println(selectedStarter + " £" + starterPrice[1]); } else { selectedStarter = starterMeal[2]; System.out.println(selectedStarter + " £" + starterPrice[2]); } // 处理主菜选择 System.out.println("What would you like for your main? "); int custMain = scanner.nextInt(); if (custMain == 4) { selectedMain = mainMeal[0]; System.out.println(selectedMain + " £" + mainPrice[0]); } else if (custMain == 5) { selectedMain = mainMeal[1]; System.out.println(selectedMain + " £" + mainPrice[1]); } else { selectedMain = mainMeal[2]; System.out.println(selectedMain + " £" + mainPrice[2]); } // 处理甜点选择 System.out.println("What would you like dessert? "); int custDessert = scanner.nextInt(); if (custDessert == 7) { selectedDessert = dessertMeal[0]; System.out.println(selectedDessert + " £" + dessertPrice[0]); } else if (custDessert == 8) { selectedDessert = dessertMeal[1]; System.out.println(selectedDessert + " £" + dessertPrice[1]); } else { selectedDessert = dessertMeal[2]; System.out.println(selectedDessert + " £" + dessertPrice[2]); } // 处理饮品选择 System.out.println("What would you like to drink? "); int custDrink = scanner.nextInt(); if (custDrink == 10) { selectedDrink = drinkMeal[0]; System.out.println(selectedDrink + " £" + drinkPrice[0]); } else if (custDrink == 11) { selectedDrink = drinkMeal[1]; System.out.println(selectedDrink + " £" + drinkPrice[1]); } else { selectedDrink = drinkMeal[2]; System.out.println(selectedDrink + " £" + drinkPrice[2]); } // 输出完整订单 System.out.println("您的订单是:" + selectedStarter + "、" + selectedMain + "、" + selectedDessert + "、" + selectedDrink); } }
关键修改说明
- 新增
selectedStarter、selectedMain等四个字符串变量,专门存储用户选中的菜品名称 - 在每个输入判断的分支中,同步将对应数组里的菜品名赋值给上述变量
- 最后新增订单输出语句,按要求格式拼接所有菜品名称并打印
内容的提问来源于stack exchange,提问作者cloudze
相关产品推荐
相关产品推荐

