Java问题 - 扫描仪输入和If(X ==输入)语句

时间:2010-09-11 04:29:25

标签: java validation java.util.scanner

我刚刚阅读了与Java Scanner问题相关的七个主题,但没有一个包含我的问题的答案。

我正在尝试从控制台获取用户输入。我创建一个Scanner对象(输入),然后尝试将用户的命令存储在一个名为“command”的字符串中。然后我将“命令”传递回原来的runGame函数。似乎Scanner / command确实读取了写文本。 (如果我输入'd'然后打印命令的内容则打印'd'。)

但是当我返回字符串并将其存储在nextMove中时,它会中断。例如,如果未调用statement,我将输入'd',然后输入(nextMove =='d')。事实上,无论我输入什么,只输入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;
}

当你正在帮助时(我要去搜索但是如果我找不到它)什么是识别扫描仪对象中空白输入的最佳方法?

我是否需要担心控制台中的用户输入?

4 个答案:

答案 0 :(得分:2)

使用==,而不是使用.equals(String),因此您的支票将如下所示:

if(nextMove.equals("d"))

==检查变量是内存中完全相同的引用,.equals()检查这两个实例在逻辑上是否等效。

答案 1 :(得分:2)

正如其他人所说,在检查字符串之间是否相等时使用.equals。

此外,每当你在平等检查中有一个常数时,你应该把它放在第一位。 e.g。

"abc".equals(someString);

这只是一个布尔值。鉴于:

someString.equals("abc");

这可以是布尔值或抛出NullPointerException。

答案 2 :(得分:1)

你不应该使用==进行字符串比较,如果我没记错,请使用compare,compareTo或equals。

答案 3 :(得分:0)

您不应使用“==”方法来比较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