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 ではエラーはないと表示されますが、実行して boy または girl と入力しても何も起こらず、その理由がわかりません。

また、文字列変数で自分自身をテストしているプログラムをからかわないでください。

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 では==、コンテンツではなくオブジェクトの ID を比較します。したがって、あなたの場合、オブジェクトを比較して、他の2つのオブジェクトと読み込んでいます。これは常に失敗します。

一方equals()、両方のオブジェクトの内容を比較するため、ここでは成功します。

于 2013-06-03T14:33:16.753 に答える
1

.equals()文字列比較に使用しない==

私はちょうど答えに答えました: まったく同じ問題 文字列の比較に equals メソッドを使用します。

==文字列オブジェクトの文字列値を比較するのではなく、参照の等価性をチェックするだけです。

この点で、2 つの文字列オブジェクトを同じ値で比較すると、それらは==演算子によって等しくありません

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 に答える
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.");
}
}
}
于 2013-06-03T14:34:10.370 に答える
0

文字列比較には .equals を使用します。

if(Gender.equals("boy"))

または、そのように入力をインターンしてから、== を使用することもできます

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

でも面白いプログラム:D

于 2013-06-03T14:35:17.483 に答える
0

私はこれに乗り込んでいます...

==2 つの String オブジェクトが同じオブジェクトかどうかをテストします。
.equals()2 つの文字列が同じ「値」を持っているかどうかをテストします

テストをif(Gender.equals("boy"))etcに変更します。

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 に答える