1
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 中,它说没有错误,但是当我运行它并输入男孩或女孩时,什么也没发生,我不明白为什么。

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

4

6 回答 6

9

如果您要比较字符串,请不要使用==,而是使用equals()

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

在 Java 中==比较对象身份而不是内容!因此,在您的情况下,您将读取的对象与其他两个对象进行比较。这将永远失败。

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

于 2013-06-03T14:33:16.753 回答
1

这可能是这个答案的副本: Java 中 == vs equals() 有什么区别?

在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.");
}
}
}
于 2013-06-03T14:34:10.370 回答
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.");
      }
   }
}
于 2013-06-03T14:33:25.583 回答
0

我要加入这个...

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

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

Java 不是 javasript。

于 2013-06-03T14:37:07.917 回答
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.");
}

}}
于 2013-06-03T14:34:49.683 回答
0

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

if(Gender.equals("boy"))

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

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

有趣的程序虽然:D

于 2013-06-03T14:35:17.483 回答