0

基本上我是在 BlueJ 中制作这个 Java 程序,其中玩家是在指环王的世界中。我为武器、物品等创建了单独的包。我在所有包之外都有一个 Main 类(在项目屏幕的主体中)。在那里,我尝试了一些东西。

public static void test()throws Exception{
        System.out.println("There is a brass sword and an iron sword. Which do you want?");
        Scanner in = new Scanner(System.in);
        String s = in.next();
        HashMap options = new HashMap();
        options.put("brass", new Sword());
        options.put("iron", new Sword());
        Sword k = options.get(s);
}

我希望上述方法返回一个 Sword 对象给我。不幸的是,这不起作用。有什么帮助……?

4

4 回答 4

2

只需使用参数化类型HashMap,声明HashMap

HashMap<String, Sword> options = new HashMap<String, Sword>();

我希望上述方法返回一个 Sword 对象给我。

然后更改方法返回类型并为其添加返回:

public static Sword test()throws Exception{
        System.out.println("There is a brass sword and an iron sword. Which do you want?");
        Scanner in = new Scanner(System.in);
        String s = in.next();
        HashMap<String, Sword> options = new HashMap<String, Sword>();
        options.put("brass", new Sword());
        options.put("iron", new Sword());
        Sword k = options.get(s);
        return k;
}
于 2013-10-31T10:27:55.647 回答
1

使用以下代码:

public static Sword test()throws Exception{
    System.out.println("There is a brass sword and an iron sword. Which do you want?");
    Scanner in = new Scanner(System.in);
    String s = in.next();
    HashMap<String, Sword> options = new HashMap<String, Sword>();
    options.put("brass", new Sword());
    options.put("iron", new Sword());
    return options.get(s);
}
于 2013-10-31T10:31:18.857 回答
0

如果您希望您的方法返回一个 Sword 对象,您应该在方法调用结束时更改public static void test()public static Sword test()return sword

于 2013-10-31T10:29:36.237 回答
0

默认的 hashMap 接受两种泛型类型HashMap<Object,Object>,它们表示HashMap<Key,Value>您的代码必须将其options.get(s)转换为Sword但您不使用泛型的强大功能,因此推荐@BackSlash 的答案,因为您不需要转换。

更多关于泛型:http ://www.tutorialspoint.com/java/java_generics.htm

于 2013-10-31T10:35:08.410 回答