Java将字符串转换为整数以进行比较

时间:2012-12-02 17:35:28

标签: java string methods interface integer

我正在为特定类编写可比较接口的compareTo方法。我需要采用两个不同的字符串并比较它们,看看是否有一个比另一个更有价值。我通常会使用.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 个答案:

答案 0 :(得分:1)

你必须这样做:

name.compareTo(String_to_be_compare);

compareTo

public int compareTo(Object o)

  

将此String与另一个Object进行比较。如果Object是String,   此函数的行为类似于compareTo(String)。

请注意:

<强>返回

  

值0 如果参数是字符串字典相等到   这个字符串;如果参数是字符串,则值小于0   按字典顺序显示比此字符串更强;和值大于0   如果参数是字符串按字典顺序比此字符串少。 (source

那么你的情况:

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

tw:实现类似的接口,指定你要比较的内容(通常是相同的类型),因为你没有指定你的接口与任何奇数的东西相比较的任何东西。

答案 1 :(得分:1)

Comparable界面是通用。你的类声明应该看起来像这样:

class AccountOwnerComparable implements Comparable<AccountOwnerComparable> {...

注意AccountOwnerComparable类型参数。有了这个,你就有了

public int compareTo(AccountOwnerComparable other) {
    return name.compareTo(other.name);
}

答案 2 :(得分: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;
    }

}

答案 3 :(得分:0)

使用Integer.parseInt()方法。通过这种方式,您可以使用><,而且更加详细。 我假设您要比较包含数字的两个String对象。虽然你没有在问题中写出来,但标题是这样说的。