gpt4 book ai didi

java - 带有枚举的 nullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:22:26 26 4
gpt4 key购买 nike

我正在编写一个游戏,玩家必须在对话框字段中输入一些内容,而 java 必须将其解释为一个 Action 。我有一个名为 GameEngine 的类,我在其中使用开关:

public void interpretCommand(final String commandLine) 
{
Command command = parser.getCommand(commandLine);
CommandWord commandWord = command.getCommandWord();
switch ( commandWord ) {
case UNKNOWN:
gui.println("Unknown command...");
return;
case LOAD:
load();
break;
}
}

这里使用的枚举位于枚举类中:

public enum CommandWord
{
LOAD("charger"),UNKNOWN("?");
private String commandWord;
}

最后是 CommandWords 类:

public class CommandWords
{
// a HashMap that holds all valid command words
private HashMap<String, CommandWord> validCommands;

public CommandWords()
{
validCommands = new HashMap<String, CommandWord>();
for(CommandWord command : CommandWord.values()) {
if(command != CommandWord.UNKNOWN){
validCommands.put(command.toString(), command);
}
}
}


/**
* @param commandWord the command word to look for in the valid commands
* @return the commandWord associated with the word typed
*/
public CommandWord getCommandWord(final String commandWord)
{
CommandWord command =validCommands.get(commandWord);
if(command !=null) {
return command;
}
else {
return CommandWord.UNKNOWN;
}
}

命令类:

public class Command
{
private CommandWord commandWord;

/**
* @param commandWord from enum class
*/
public Command(CommandWord commandWord)
{
this.commandWord = commandWord;
}

public CommandWord getCommandWord()
{
return commandWord;
}
}

我的问题很简单:当我输入充电器时,它可以工作,但是当我输入一个不在列表中的随机单词时,我在终端中的行中收到一个 NullPointerException

        switch ( commandWord )

在解释命令中。

我看不出我的代码有什么问题。如果有人可以帮忙,谢谢。请不要怪我,我是新手,几个月前才刚刚开始!

解决方案:在命令中修改/添加这些行

    public boolean isUnknown()
{
return (commandWord == null);
}

public CommandWord getCommandWord()
{
if(!isUnknown()){

return commandWord;

}
else return CommandWord.UNKNOWN;
}

最佳答案

这一行只有一件事可以为 null,那就是 commandWord。因此,您的方法调用 command.getCommandWord() 返回 null。

编辑:根据您现在提供的信息,这意味着解析器返回一个没有设置 commandWord 的 Command 对象。

关于java - 带有枚举的 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14030316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com