字符串比较没有正确返回?

时间:2013-06-03 14:30:57

标签: java string variables

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中它表示没有错误但是当我运行它并输入男孩或女孩时没有任何反应,我不明白为什么。

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

6 个答案:

答案 0 :(得分:9)

如果您要比较字符串,请不要使用==,而是使用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)

使用.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.");
      }
   }
}

答案 2 :(得分:1)

这可能是这个答案的重复: What is the difference between == vs equals() in Java?

在java中使用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.");
}
}
}

答案 3 :(得分:0)

刚刚实现了多个相同的答案。原因相同,请使用.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.");
}

}}

答案 4 :(得分:0)

使用.equals进行字符串比较。

if(Gender.equals("boy"))

或者您可以像这样输入输入,然后使用==

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

有趣的节目:D

答案 5 :(得分:0)

我正在接受这个......

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

将测试更改为if(Gender.equals("boy"))等。

Java不是javasript。