You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:48:23