Java 问题 - 扫描程序输入和 If (X == Input) 语句
Posted
技术标签:
【中文标题】Java 问题 - 扫描程序输入和 If (X == Input) 语句【英文标题】:Java Problems - Scanner Input and If (X == Input) Statements 【发布时间】:2010-09-11 04:29:24 【问题描述】:我刚刚阅读了与 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;
在您提供帮助时(我会搜索,但如果找不到)识别扫描仪对象中的空白输入的最佳方法是什么?
对于控制台中的用户输入,我是否还需要担心其他任何异常/捕获?
【问题讨论】:
我可能错了,但我不认为 java 字符串语句是用 == 等一下,因为我需要使用 .equals() 不是吗? 【参考方案1】:不要使用==
,而是使用.equals(String)
,这样您的支票将如下所示:
if(nextMove.equals("d"))
==
检查变量是否是内存中完全相同的引用,.equals()
检查两个实例在逻辑上是否等效。
【讨论】:
【参考方案2】:正如其他人所说,在检查字符串之间是否相等时使用 .equals。
此外,只要您在相等性检查中有一个常数,您就应该把它放在第一位。例如
"abc".equals(someString);
这只会是一个布尔值。鉴于:
someString.equals("abc");
这可以是布尔值或抛出 NullPointerException。
【讨论】:
【参考方案3】:如果我没记错的话,你不应该使用 == 进行字符串比较。
【讨论】:
【参考方案4】:您不应该使用“==”方法来比较 2 个 String 对象。您将需要使用 .equals() 方法。
您更改的部分代码应如下所示:
if(nextMove.equals("d"))
System.out.print("WORRRRDDD d");
else if(nextMove.equals("w"))
System.out.print("WORRRRDDD w ");
为什么?引用自here
“==”运算符比较两个对象 参考,看看他们是否参考 到同一个实例。它检查 两个对象是否恰好是 相同的对象与否。两个字符串可能是 不同的对象,但可以有 相同的值(具有完全相同的 其中的字符)。在这种情况下, “==” 将返回 false。
比较时要特别小心 对象。如果你想看看是否 两个对象是否相同,那么 使用”==” 来,或者使用equal() 来查看是否 它们具有相同的价值。
同时检查以下链接:
http://www.zparacha.com/java-string-comparison/
http://www.devdaily.com/java/edu/qanda/pjqa00001.shtml
http://www.javabeginner.com/learn-java/java-string-comparison
【讨论】:
以上是关于Java 问题 - 扫描程序输入和 If (X == Input) 语句的主要内容,如果未能解决你的问题,请参考以下文章