字符串比较不正确返回?

字符串比较不正确返回?

问题描述:

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中,它表示没有错误,但是当我运行它并输入男孩或女孩时,什么都没有发生,我不明白为什么。字符串比较不正确返回?

也请不要取笑程序我正在测试自己的字符串变量。

+16

我最好的猜测是,一个现代编译器发现你的男孩和女孩的性格太过性别主义接受,而忽略你的代码。 –

+1

是的。那和字符串比较。因为我很可爱,而且很酷。除了可爱和酷的部分。 –

+0

每当有人比较'String'与'=='时,开发人员会哭泣...... –

如果你是比较字符串,不要使用==,但使用equals()

if(Gender.equals("boy")){ 
    System.out.println("You are cool."); 
} 
if(Gender.equals("girl")){ 
    System.out.println("You are cute."); 
} 

在Java ==比较对象的身份,而不是内容!所以在你的情况下,你比较对象,你阅读,与另外两个对象。这将永远失败。

另一方面equals()比较两个对象的内容,因此将在这里成功。

+1

+1解释为什么==不是正确的选择。 – MrHappyAsthma

+0

谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250

+1

另外还有一个用于解释这个为最大时间的+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."); 
     } 
    } 
} 
+0

谢谢我知道这很简单,但我是新来的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."); 
} 
} 
} 
+0

谢谢我知道这很简单,但我是新来的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."); 
} 

}} 
+0

谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250

使用.equals的字符串比较。

if(Gender.equals("boy")) 

或者你可以实习生像这样的输入,然后使用==

Gender = input.nextLine().intern(); 
if(Gender=="boy") 

有趣的节目,虽然:d

+0

谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250

我得到了关于这个...

==测试两个String对象是否为相同对象。
.equals()测试如果两个字符串具有相同的“价值”

更改您的测试,以if(Gender.equals("boy"))

Java不是javasript。

+0

谢谢我知道这很简单,但我是新来的Java。也感谢您的快速回复。 – user2448250