好吧,我真的试图解决(和谷歌)它,但我做不到。
对不起我的英语和那个愚蠢的标题(这是想到的最好的):)
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(");
}
安慰:我是天才吗?
是的
我不是天才(
如果(s == "yes")--->>永远不会
而是使用
if (s.equals("yes"))
编辑:仅用于解释:第一个语句是一个布尔运算符,用于控制对象 s 和对象"yes"的引用是否相同。
第二个比较字符串变量的实际内容。
因此,通常,在使用非基元类型时,切勿使用布尔比较。
实际上,您正在比较引用,而不是 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 方法现在在字符上比较字符串 s 和 "yes"。
我认为罗曼是对的,你应该使用.equals
而不是==
,它们意味着不同的东西。
==
检查对对象的引用,这取决于您要比较的内容,但最好使用比较字符串内容的.equals()
。
您的代码应如下所示:
String s = scan.nextLine();
if (s.quals("yes")){
System.out.println("^_^");
}
else{
System.out.println("I am not a genius(");
}
我还建议在用户输入上使用.toLowerCase()
,因为这也会导致当用户键入"Yes"时条件返回 false,因为应该为"yes"。那看起来像:s=s.toLowerCase();
希望这有帮助。