-2

好吧,我真的试图解决(和谷歌)它,但我做不到。

对不起我的英语和那个愚蠢的标题(这是我想到的最好的标题):)

System.out.println("AM I A GENIUS?");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
 if (s == "yes"){
        System.out.println("^_^");
}
 else{
    System.out.println("I am not a genius(");
}

控制台:AM IA GENIUS?

是的

我不是天才(

4

3 回答 3

0

if (s == "yes") --->> 从不

改为使用

if (s.equals("yes"))

编辑:只是为了解释:第一条语句是一个布尔运算符,它控制对象 s 和对象“是”的引用是否相同。

第二个比较 String 变量的真实内容。

因此,一般来说,在使用非原始类型时,您永远不应该使用布尔比较。

于 2013-11-02T21:59:52.523 回答
0

实际上,您是在比较引用而不是 2 个 String 对象。

你应该做的是:

System.out.println("AM I A GENIUS?");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
 if (s.equals("yes")){
        System.out.println("^_^");
}
 else{
    System.out.println("I am not a genius(");
}

String 类的 equals 方法现在按字符比较 Strings 和“yes”。

于 2013-11-02T22:00:19.887 回答
0

我认为 Roman 是对的,你应该使用.equalsnot ==,它们意味着不同的东西。

==检查对对象的引用,这取决于您要比较的内容,但最好使用.equals()比较字符串的内容。

您的代码应如下所示:

String s = scan.nextLine();
if (s.quals("yes")){
    System.out.println("^_^");
}
 else{
    System.out.println("I am not a genius(");
}

我还建议 .toLowerCase()在用户输入上使用 a ,因为当用户键入“是”时,这也会导致条件返回 false 应该是“是”。那看起来像:s=s.toLowerCase();

希望这可以帮助。

于 2013-11-02T22:08:55.823 回答