作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个游戏,玩家必须在对话框字段中输入一些内容,而 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/
我是一名优秀的程序员,十分优秀!