0

重複の可能性:
JavaString.equals対==

私はJavaでifステートメントを使用して、その人が男の子か女の子かを尋ねることによって、その人が男性か女性かを判断しています。これはかなりばかげた発言ですが、私の質問は、私が何を入力しても、常に「あなたは女性です!」と表示されます。これはかなり迷惑です。手伝ってもらえますか?これはコードです

import java.util.Scanner;

class ifstatement {

    public static void main( String args[] ) {
        System.out.print( "please enter boy or girl as an input:" );

        Scanner x = new Scanner( System.in );
        String a = x.nextLine();

        if ( a == "boy" ) {
            System.out.print( "You are a male" );
        }
        else {
            System.out.print( "You are a female!" );
        }
     }
 }    
4

5 に答える 5

4

equals()比較する方法を使用するString

equals()オブジェクトを比較します

==参照値を比較します

使用する

if ("boy".equals(a)) {

"boy"これにより、Stringのインスタンスがによって参照されるStringインスタンスと比較されます。a


見る

于 2012-07-26T18:16:25.353 に答える
0

1. Javaでは、オブジェクトは.equals()メソッドを使用して比較され、文字列はJavaのオブジェクトです。

2.を使用すると、正しい答えa.equals("boys")が得られます...。

于 2012-07-26T18:25:14.033 に答える
0

==比較では、2つのオブジェクトが同じメモリ位置を指しているかどうかに関係なく、オブジェクト参照が使用されます。.equals()Objectクラスでも同じことを行いますが、Stringクラスはそれをオーバーライドして値の比較を行います。

于 2012-07-26T18:19:53.477 に答える
0

オペレーターは、オブジェクトへの==参照が等しいかどうかを確認します。文字列の同等性をテストする場合、これだけでは不十分です。参照の同等性のテストはString.equals() method、他のチェックの中でも特に、内で行われます。

 public boolean equals(Object anObject) {
        if (this == anObject) {      // Reference equality
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {  // Are the strings the same size?
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])        // Compare each character
                        return false;
                }
                return true;
            }
        }
        return false;
  }
于 2012-07-26T18:21:29.323 に答える
0

あなたが言うなら:

 if ("boy".equals(a)){
 System.out.print("You are a male");
 } else if ("girl".equals(a)){
 System.out.print("you are a female!");
 { else {
 System.out.print("invalid response!");
 }

これはあなたの問題を解決するでしょう。文字列を処理するときは、常に.equals()を使用して正確な値を比較する必要があります。「==」演算子は、2つのオブジェクトがメモリ内の同じ場所を指しているかどうかを一般的に比較します。文字列はオブジェクトであるため、同じではありません。

于 2012-07-26T18:21:38.453 に答える