2014-07-09 64 views
-1

在下面的代码中,我创建了一个扫描器对象,询问用户输入,然后 通过if/else语句运行用户输入。java.util.Scanner条件语句错误

import java.util.Scanner; 
class Conditional { 
    Scanner in = new Scanner(System.in); 

    String answer = in.next(); 
    if(answer == "x") { 
     System.out.println("True"); 
    } else { 
     System.out.println("False"); 
    } 
} 

然后,我运行我的代码,然后放入“x”,没有引号。系统输出“False”,但我不明白为什么。我尝试用“x”替换“answer”变量(用引号括起来),看我的if/else语法是否搞乱了。不。我做了开关后,系统吐出“真”。我开始认为可能“答案”实际上不是一个字符串。为了测试的时候,我做了同样的事情,你在上面的代码块见,但在一个switch语句:

Scanner in = new Scanner(System.in); 

String answer = in.next(); 
switch(answer) { 
    case "x": 
     System.out.println("True"); 
     break; 
    default: 
     System.out.println("False"); 
     break; 
} 

上面的代码块,一旦我的回答是“X”,返回“True”。我在做什么我的if/else语句错了?有什么明显的我失踪了吗?

+0

的可能重复【JAVA String.equals与==(http://stackoverflow.com/questions/767372/java-string-equals-versus)的[我如何比较字符串在 –

+1

可能重复Java?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – BitNinja

+0

如果它只有一个字符长,为什么不使用'char'原始数据类型。在这种情况下,您可以使用==进行比较,代码效率更高。 – Sky

回答

4

Java中的字符串比较使用.equals()方法。

if(answer.equals("x")) { 
    System.out.println("True"); 
} else { 
    System.out.println("False"); 
}