1

我有一个程序,当你输入

圈子名称

在终端中,“名称”进入 HashMap,然后我可以输入

名称可见

圆圈将出现在画布上,或者

名字看不见

然后会消失。我正在使用 if else 语句来调用方法。我还创建了一个名为忘记的语句,所以当我输入

名字忘记

它将从 HashMap 中删除“名称”,然后如果圆圈可见,则使圆圈不可见。

private void execute(String[] commands)
{

    String basicCommand = commands[0];
    Shape name = maps.get(commands[0]);
    if (commands.length >1) {
    if(basicCommand.equals("circle")) {
    //This Names the object Circle and Create a new Circle 
       maps.put(commands[1], new Circle());
    }
    else if(name != null && "visible".equals(commands[1])) {
        makeACircle(name);
    }
    else if(name != null && "forget".equals(commands[1])) {
        makeItInvisible(name);
        maps.remove(commands[0]);
    }
    else if(name != null && "invisible".equals(commands[1])) {
        makeItInvisible(name);
    }
    else if(basicCommand.equals("help")) {
        printHelp();
    }

        //This Should Print A Message if there is no Circle name 
        // in HashMap
    else if(commands[0] != null ) {
        System.out.println("Not In HashMap " + basicCommand);
    }
    else {
        System.out.println("Unknown command: " + basicCommand);
    }
}

}

如果我使用

名字忘记

它将从 HashMap 中删除名称

如果您键入“名称可见”的内容,我需要它在“名称”不在 HashMap 中时打印一条消息,我需要一条打印类似“不在 HashMap 中”的消息。

我用我的 if else 语句尝试了它,但它下面的任何东西都不起作用,也无法让它工作

在此处输入图像描述

4

2 回答 2

2

看起来像一个拼写错误。在您的程序中,它写成“circle”,而您输入了带有大写字母的“Circle”。

尝试使用equalsIgnoreCase 而不是equals。

于 2012-12-13T22:07:50.800 回答
2

在 hashmap 中搜索键是所有语言(包括 Java)的一种非常标准的方法。只需使用您的“名称”键在您的哈希图上调用以下内容。

public boolean containsKey(对象键)

更多信息在这里:

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html#containsKey(java.lang.Object )

每当用户请求对他们认为在画布上的对象执行操作时,都可以使用它。对于您的代码:

if(!maps.containsKey(name))  {
    System.out.println("No object with name" + name);
}
于 2012-12-13T21:57:54.950 回答