1
static int findPerson(String n, int NP, Friend[] giftGivers){

    int index = 0;

    for (int i = 0; i < NP; i++){
    if (giftGivers[i].name == n){
            index = i;
    }
    }

    return index;
}

私はJavaでこのコードを使用して、Friendsの配列を検索し、Stringnで入力された名前の人のインデックス番号を見つける方法を説明しています。しかし、インデックス番号が本来あるべきインデックス番号に設定されていないことがわかりました。ifステートメントにあるからですか?

4

4 に答える 4

8

if (giftGivers[i].name == n)間違っています、使用してくださいif (giftGivers[i].name.equals(n))

ところで、使用する必要はありませんNP。これは C スタイルであり、Java では必要ありません (実際にはかなり危険です)。それ以外の

for (int i = 0; i < NP; i++)

言うだけfor (int i = 0; i < giftGivers.length; i++)

于 2012-10-30T20:41:53.030 に答える
2

ではなく文字列を比較するには、 equalsを使用する必要があります==

==実際の文字列値ではなく、オブジェクト参照を比較します。

大文字と小文字を区別しない場合は、大文字と小文字を区別しないequalsメソッドもあります

于 2012-10-30T20:42:53.737 に答える
1
(giftGivers[i].name == n){

する必要があります

(giftGivers[i].name.equals(n)){

文字列/オブジェクトの比較では、.equals()代わりにを使用する必要があります==

==参照が等しいかどうかをチェックします。equals()オブジェクトが等しいかどうかを確認します。

于 2012-10-30T20:42:12.410 に答える
1

.equals()メソッドequalityは 2 つの文字列オブジェクトをチェックし、==演算子は 2 つの参照変数が同じ String オブジェクトを指しているかどうかをチェックします。

あなたの場合、.equals()メソッドを使用する必要があります

if (giftGivers[i].name.equals(n))

文字列 APIを参照してください。2つの文字列が等しいかどうかを確認したい場合は、大文字と小文字を区別しないことに注意してくださいequalsIgnoreCase()

于 2012-10-30T20:47:20.227 に答える