-2

重複の可能性:
Javaで文字列を比較するにはどうすればよいですか?

それで、私はテスト演算子と文字列に関して質問があります。「男の子」または「女の子」のユーザー入力を取り込むプログラムを作成しようとしています。ユーザーが「男の子」と入力すると、出力は「あなたは男の子です」になります。ユーザーが「女の子」と入力すると、出力は「あなたは女の子です」になります。

ただし、プログラムをコンパイルして実行すると、何を入力しても、出力は常に「あなたは女の子です」になります。

これは、文字列に整数のような実際の値がないため、テスト演算子を使用してそれらを比較できないためですか?

また、JavaのPythonからのassert関数のようなものはありますか?

import java.util.Scanner;

class apples{
    public static void main(String args[]){
        System.out.println("Are you a boy or a girl?");
        Scanner lalala = new Scanner(System.in);
        String text = lalala.nextLine();

        if (text == "boy"){
            System.out.println("You are a boy.");
        }
        else{
            System.out.println("You are a girl.");
        }



    }
}

どうもありがとう〜

4

8 に答える 8

6

使用する

text.equals("boy")

それ以外の

 if (text == "boy")

その理由は、Javaでは、==は常に2つの参照を比較するだけです(つまり、非プリミティブの場合)。つまり、2つのオペランドが同じオブジェクトを参照しているかどうかをテストします。

ただし、equalsメソッドはオーバーライドできます。したがって、2つの異なるオブジェクトは引き続き等しい可能性があります。

ただし、equalsIgnoreCaseを使用することをお勧めします。その理由は、ユーザーが男の子、男の子、男の子、またはその他の組み合わせを入力できるためです。equalsIgnoreCaseメソッドは大文字と小文字を無視し、2つの文字列を比較します。

text.equalsIgnoreCase("boy")
于 2012-12-27T06:16:44.610 に答える
2

使用するtext.equalsIgnoreCase("boy")

場合も考えれば文字列の内容が同じかチェックします。

==は、オブジェクトが等しいかどうかをチェックするために使用されます。

text.equals( "boy")は、大文字と小文字を区別しない場合は問題ありません。

于 2012-12-27T06:15:48.447 に答える
2

サイドノート。Boy以外の入力を入力すると、Girlを印刷できます。if条件をもう1つ追加します。また、比較に行く前に、より安全な側にいることで、空白の文字列をトリミングします。

使用する

 text.equals("boy")

また

 text.equalIgnoreCase("boy") 

大文字と小文字を区別しない場合。

それ以外の

if (text == "boy")

あなたのコーデはこのようなものになります

 import java.util.Scanner;

class apples{
public static void main(String args[]){
    System.out.println("Are you a boy or a girl?");
    Scanner lalala = new Scanner(System.in);
    String text = lalala.nextLine();
    text = text.trim();
    if (text.equalIgnoreCase("Boy")){
        System.out.println("You are a boy.");
    }
    else if(text.equalIgnoreCase("Girl")){
        System.out.println("You are a girl.");
    } else {
        System.out.println("Invalid Gender");
    }
 }
}
于 2012-12-27T06:22:15.360 に答える
1

equals次のような文字列のメソッドを使用してください:if (text.equals("boy")){

==Javaでの文字列コンテンツの同等性チェック用ではありません

于 2012-12-27T06:16:25.627 に答える
1

==オブジェクトIDが同じかどうかをテストします。同じ値を含む2つの文字列オブジェクトがある場合、このオブジェクトIDは等しくなりません。equals関数を使用して、論理的等価性をテストします。

于 2012-12-27T06:17:03.453 に答える
1

あなたif elseは間違っています。ここでのみ使用してifください。さもないと、

入力した場合"some text"、出力は次のようになります"You are a girl"

このような

  if (text.equalsIgnoreCase("boy")) {
        System.out.println("You are a boy.");
    }
    else if (text.equalsIgnoreCase("girl")) {
        System.out.println("You are a girl.");
    } else {
        System.out.println("You are neither a boy nor a girl");
    }
于 2012-12-27T06:28:29.760 に答える
0

==boyの代わりに.equalsメソッドを使用するのが最善です

于 2012-12-27T06:29:39.837 に答える
0

assertに関するその他の質問:Javaにはassert関数があります。これはサンプルコードです。

  assert(x <= 50):      "Not Accepted"; 

このコードは、整数xが50より大きいかどうかをチェックします。コンソールに出力が表示されます。

于 2012-12-27T06:31:27.077 に答える