1

バブルソートを使用してオブジェクトの配列を姓でソートしてから印刷しようとしていた次のコードに行き詰まっています。どこが間違っているのですか、どうすれば印刷できますか? ここに私のコードがあります

for(int i = 1; i < clipArray.length; i++) {
    for(int j = 0; j < clipArray.length; j++) {
        if(((clipArray[j].getSurname()).compareToIgnoreCase((clipArray[j+1].getSurname()))) {
            Clip temp = clipArray[j];
            clipArray[j] = clipArray[j+1];
            clipArray[j+1] = temp;
        }
    }
}

問題: 必要なブール値、見つかった int

4

4 に答える 4

2

エラーの理由は

compareToIgnoreCase はブール値ではなく int 値を返します。

指定された文字列がこの文字列より大きい、等しい、または小さい場合、大文字と小文字の考慮を無視して、負の整数、ゼロ、または正の整数を返します。

ブール値を取る場合のみ。

于 2013-10-24T15:00:50.957 に答える
2

問題は、String#compareToIgnoreCaseが返され、ステートメントの結果intが必要になることです。そのjavadocから:booleanif

戻り値

指定された文字列がこの文字列より大きい、等しい、または小さいため、負の整数、ゼロ、または正の整数 (大文字と小文字の考慮は無視)

したがって、定義に従って、このメソッドの結果を別の数値と比較します。

if (clipArray[j].getSurname().compareToIgnoreCase(clipArray[j+1].getSurname()) < 0) {
    //...
}

また、forループ宣言に別のエラーがあります。それらは次のようになります。

for(int i = 1; i < clipArray.length; i++) {
    for(int j = 0; j < clipArray.length - 1; j++) { //spot the difference
        //...
    }
}
于 2013-10-24T15:02:12.587 に答える
0

-メソッドをサポートするオブジェクトで clipArray が満たされていると仮定しますgetSurname()

このメソッドcompareToIgnoreCaseは int を返すので、ifステートメントの値と比較する必要があります。

if(foo.compareTo(バー) > 0)

于 2013-10-24T15:02:27.620 に答える