这个问题在这里已经有答案了:
什么是nullpointerexception,如何修复它(12个答案)
java.util.nosuchelementexception-扫描仪读取用户输入(4个答案)
上个月关门了。
我试图得到一个菜单选项风格的待办事项列表,允许用户选择他们想做什么。当我运行代码时,它允许我输入一次,然后当它返回并且我希望它再次等待userinput以便它们再次导航时,它抛出一个nullpointerexception。我试过各种方法来解决这个问题。
public class ToDoListApplication {
Scanner scanner;
String input;
public ToDoListApplication() {
System.out.println("Starting Application\nType 'Help' for Options\nPlease Select an Option..");
scanner = null;
menu();
}
public void menu() {
input = null;
if (input == null) {
input = userInput();
}
methodSelector(input);
}
public String userInput() {
scanner = new Scanner(System.in);
if (scanner.hasNextLine()) {
input = scanner.nextLine();
}
scanner.close();
return input;
}
public void methodSelector(String userInput) {
if (userInput.equalsIgnoreCase("help")) {
helpMethod();
} else {
System.out.println("unknown string");
}
}
public void helpMethod() {
System.out.println("Command 'Add': Add To-do item to list.\nType 'Remove': Remove Item from List.\nType 'Count': See how many items in list.\nType 'Find': Locate specific item by name.\nType 'Print': See all items in list.");
menu();
}
}
2条答案
按热度按时间qxsslcnc1#
是否是因为您关闭了扫描仪,同时关闭了system.in?我不能评论,所以我只能张贴一个答案。抱歉,如果它不起作用。
bgtovc5b2#
菜单应该在while循环中完成。
您可以使用类似的结构:
我验证了选择是正确的类型,并且在正确的数字范围内。只要输入无效,while循环就会运行。当用户选择了一个有效的选项时,while循环退出并返回菜单选项。