2

compareTo特定のクラスの Comparable Interfaceのメソッドを作成しています。2 つの異なる文字列を取得して比較し、一方が他方よりも大きな値を保持しているかどうかを確認する必要があります。通常は使用します.compareTo()が、この場合、エラーが発生して機能しません。これは私が持っているものです:

public int compareTo(Object o) {
    if (name < ((AccountOwnerComparable) o).name)
        return -1;
    else if (name > ((AccountOwnerComparable) o).name)
        return 1;
    else
        return 0;

}

を使用できないことはわかっています< or >が、シナリオが何であるかを示すためだけです。

4

4 に答える 4

1

あなたはただしなければなりません:

name.compareTo(String_to_be_compare);

比較する

public int compareTo(オブジェクト o)

この文字列を別のオブジェクトと比較します。オブジェクトが文字列の場合、この関数は compareTo(String) のように動作します。

ご了承ください:

戻り値:

引数がこの文字列と辞書的に等しい文字列である場合は0。引数が この文字列よりも辞書的に大きい文字列である場合は0 未満の値。 引数がこの文字列よりも辞書的に小さい文字列である場合は、 0 より大きい値。(ソース

だからあなたの場合:

public int compareTo(Object o)
{
    AccountOwnerComparable obj = (AccountOwnerComparable) o;
    return obj.name.compareTo(this.name);
}

tw: 比較したいもの (通常は同じタイプ) を指定する同等のインターフェースを実装します。インターフェースが奇妙なものと比較するものを何も指定していないためです。

于 2012-12-02T17:49:28.983 に答える
1

キャスト中にブラケットか何かを見逃した可能性があります。次のコードを試してください。

public int compareTo(Object o) {
    if (name.compareTo(((AccountOwnerComparable) o).name) > 0) {
        System.out.println("Greater");
        return -1;
    } else if (name.compareTo(((AccountOwnerComparable) o).name) < 0) {
        System.out.println("Lesser");
        return 1;
    } else {
        System.out.println("Equal");
        return 0;
    }

}
于 2012-12-02T18:16:12.167 に答える
1

Comparableインターフェイスは汎用です。クラス宣言はおそらく次のようになります。

class AccountOwnerComparable implements Comparable<AccountOwnerComparable> {...

AccountOwnerComparable型パラメータに注意してください。これで、あなたは

public int compareTo(AccountOwnerComparable other) {
    return name.compareTo(other.name);
}
于 2012-12-02T18:14:54.357 に答える
0

Integer.parseInt()メソッドを使用します。このように、>または<を使用でき、より冗長になります。String数字を含む2つのオブジェクトを比較したいとします。質問には書きませんでしたが、タイトルにはそう書いてあります。

于 2012-12-02T17:41:32.973 に答える