字符串比较不正确返回?
import java.util.Scanner;
public class Poop {
public static void main (String args[]){
Scanner input = new Scanner(System.in);
String Gender;
System.out.println("Are you a boy or a girl?");
Gender = input.nextLine();
if(Gender == "boy"){
System.out.println("You are a boy.");
}
if(Gender == "girl"){
System.out.println("You are a girl.");
}
}
}
我想知道为什么这个程序不工作。在Eclipse中,它表示没有错误,但是当我运行它并输入男孩或女孩时,什么都没有发生,我不明白为什么。字符串比较不正确返回?
也请不要取笑程序我正在测试自己的字符串变量。
如果你是比较字符串,不要使用==
,但使用equals()
:
if(Gender.equals("boy")){
System.out.println("You are cool.");
}
if(Gender.equals("girl")){
System.out.println("You are cute.");
}
在Java ==
比较对象的身份,而不是内容!所以在你的情况下,你比较对象,你阅读,与另外两个对象。这将永远失败。
另一方面equals()
比较两个对象的内容,因此将在这里成功。
+1解释为什么==不是正确的选择。 – MrHappyAsthma
谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250
另外还有一个用于解释这个为最大时间的+1 ... –
使用.equals()
字符串比较不==
我刚才已经回答了一个答案:究竟同样的问题 使用equals方法用于字符串比较。
==
不会比较字符串对象的字符串值,只是检查引用是否相等。
在这方面,如果你比较相同值的两个字符串对象,他们是不是==
操作
import java.util.Scanner;
public class Poop {
public static void main (String args[]){
Scanner input = new Scanner(System.in);
String Gender;
System.out.println("Are you a boy or a girl?");
Gender = input.nextLine();
if(Gender.equals("boy")){
System.out.println("You are cool.");
}
if(Gender.equals("girl")){
System.out.println("You are cute.");
}
}
}
谢谢我知道这很简单,但我是新来的java。也感谢您的快速回复。 – user2448250
等于这可能是这个答案的副本: What is the difference between == vs equals() in Java?
使用equals
,而不是==
in java for stirng comparison
import java.util.Scanner;
public class Poop {
public static void main (String args[]){
Scanner input = new Scanner(System.in);
String Gender;
System.out.println("Are you a boy or a girl?");
Gender = input.nextLine();
if(Gender.equals("boy")){
System.out.println("You are cool.");
}
if(Gender.equals("girl")){
System.out.println("You are cute.");
}
}
}
谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250
刚刚实现了同样的答案。理由是同样的,使用.equals
代替==
import java.util.Scanner;
public class Poop {
public static void main (String args[]){
Scanner input = new Scanner(System.in);
String Gender;
System.out.println("Are you a boy or a girl?");
Gender = input.nextLine();
if(Gender.equals("boy")){
System.out.println("You are cool.");
}
if(Gender.equals("girl")){
System.out.println("You are cute.");
}
}}
谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250
使用.equals的字符串比较。
if(Gender.equals("boy"))
或者你可以实习生像这样的输入,然后使用==
Gender = input.nextLine().intern();
if(Gender=="boy")
有趣的节目,虽然:d
谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250
我得到了关于这个...
==
测试两个String对象是否为相同对象。 .equals()
测试如果两个字符串具有相同的“价值”
更改您的测试,以if(Gender.equals("boy"))
等
Java不是javasript。
谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250
我最好的猜测是,一个现代编译器发现你的男孩和女孩的性格太过性别主义接受,而忽略你的代码。 –
是的。那和字符串比较。因为我很可爱,而且很酷。除了可爱和酷的部分。 –
每当有人比较'String'与'=='时,开发人员会哭泣...... –