Java中如何根据用户选择绑定对应Cook实例至delivered方法
解决用户选择指定Cook实例的问题
嘿,你的核心需求其实很清晰——把用户选择的厨师和已创建的Cook实例对应起来,根本不需要用到instanceof(这个关键字是用来判断对象是否属于某个类的实例,在这里完全用不上)。下面给你关键的实现思路和修改后的代码:
关键技术步骤
- 第一步:提供选择选项并获取用户输入
用Scanner类接收用户输入,先打印出可选的厨师列表,让用户通过编号或者名字选择。 - 第二步:映射用户输入到Cook实例
直接通过分支逻辑(if/else或者switch)把用户的选择和你已经创建的cook1、cook2绑定,赋值给whichcook变量。 - 第三步:传入正确实例调用方法
确保deliverer.delivered()方法传入的是用户选中的Cook实例。
修改后的完整代码示例
package KebabStore; import java.util.Scanner; public class DamascusKebab { public static int cooksnumber; public static int deliverersnumber; public static void main(String[] args) { // 创建厨师实例 Cook cook1 = new Cook ("Jan de Vries", "Butcherknife 1", "1212-IS", "Allahmelo", 123456); Cook cook2 = new Cook ("Sinbad", "Camelhumb 2","2323-IS", "Halal-lem", 654321); // 创建配送员实例(原代码里deliverer变量未定义,这里用deliverer1) Deliverer deliverer1 = new Deliverer ("Ali Baba", "Helmgras 11", "3434-JH", "Ji-Hattem",456789); Deliverer deliverer2 = new Deliverer ("Muammar", "Zadeldreef 22", "4545-JH", "Moskemenade", 987654); Customer customer = new Customer ("Piet Hein", "Klantlaan 25", "5656-KL", "Darmstadt"); cooksnumber = Cook.numberofcooks; deliverersnumber = Deliverer.numberofdeliverers; // 1. 展示选项并获取用户输入 Scanner scanner = new Scanner(System.in); System.out.println("请选择准备食物的厨师:"); System.out.println("1. Jan de Vries"); System.out.println("2. Sinbad"); int choice = scanner.nextInt(); scanner.close(); // 2. 根据选择匹配Cook实例 Cook whichcook; if (choice == 1) { whichcook = cook1; } else if (choice == 2) { whichcook = cook2; } else { // 处理无效输入,默认选第一个厨师 System.out.println("无效选择,默认选择Jan de Vries"); whichcook = cook1; } // 3. 调用配送方法,传入选中的厨师 deliverer1.delivered(whichcook, customer); } }
额外说明
如果你想让用户通过输入厨师名字来选择(比如输入“Jan de Vries”),只需要把输入类型改成字符串,然后判断输入内容是否匹配厨师的名字即可:
String cookName = scanner.nextLine(); Cook whichcook; if (cookName.equalsIgnoreCase("Jan de Vries")) { whichcook = cook1; } else if (cookName.equalsIgnoreCase("Sinbad")) { whichcook = cook2; } else { // 无效输入处理 whichcook = cook1; }
这样就完美实现了你的需求——让用户选择指定厨师,然后把对应的Cook实例传给delivered方法。
内容的提问来源于stack exchange,提问作者Twannemannn
相关产品推荐
相关产品推荐

