我刚刚阅读了与 Java Scanner 问题相关的七个线程,但没有一个包含我的问题的答案。
我正在尝试从控制台获取用户输入。我创建了一个 Scanner 对象(输入),然后尝试将用户的命令存储在一个名为“command”的字符串中。然后我将“命令”传递回原来的 runGame 函数。似乎扫描仪/命令确实读取了写入文本。(如果我输入“d”然后打印命令的内容,它会打印“d”。)
但是当我返回字符串并将其存储在 nextMove 中时,它会中断。例如,我将输入 'd' 但随后 (nextMove == 'd') if 语句未被调用。其实不管我输入什么,都只输入了else语句。
我究竟做错了什么?我该如何解决
这是原始功能代码:
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
这是 takeInput/Scanner 函数代码:
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
在您提供帮助时(我要搜索,但如果找不到)识别扫描仪对象中的空白输入的最佳方法是什么?
对于控制台中的用户输入,我是否还需要担心其他任何异常/捕获?