Java Scanner:这看起来很容易



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

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

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();

希望这有帮助。

最新更新