2

我得到了这段代码,但我得到了一个错误incomparable types: java.lang.String and int,对于这行代码 if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))

方法是这样的:

public int compareTo(Object o)
{
    int result;
    AnyClass obj = (AnyClass)o;
    if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
    {
        result = 0;
    }
   else if (this.name.compareTo(obj.name) > 0)
    {
        result = 1;
    }
    else
    {
        result = -1;
    }
    return result;
}
4

8 回答 8

6

我认为您的支架位置不正确,

this.name.String.compareTo(obj.name == 0)) 

obj.name == 0 是您可能将 String (name) 与 int (0) 进行比较的地方。我猜你想在 obj.name 上使用 compareTo ,然后检查它是否等于零。

我也认为在第二部分

(this.age = obj.age)

您想使用 == 而不是 =,所以我认为您要使用的代码是:

((this.name.compareTo(obj.name)==0) && (this.age == obj.age))
于 2013-01-13T18:35:18.180 回答
2

您不能将字符串与整数进行比较:)

可以将字符串“001”转换为整数“1”;或整数“1”到字符串“1”中。

请参阅Integer.parseInt()Integer.toString()

于 2013-01-13T18:33:26.480 回答
1

compareTo将 Objec 引用(在您的情况下为字符串)作为参数。但是您的代码compareTo(obj.name == 0)以不合适的布尔值传递。

于 2013-01-13T18:33:05.573 回答
1

我认为代码

 if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))

实际上应该这样读

 if ((this.name.compareTo(obj.name) == 0) && (this.age == obj.age))

更改位置== 0是(并将第二个更改=为一个==)使此代码有意义。

于 2013-01-13T18:37:23.327 回答
1

这个实现有很多问题。看起来这是Comparablefor 类的实现,AnyClass这意味着签名是错误的。

AnyClass应该实现Comparable<AnyClass>,代码应该是这样的:

@Override
public int compareTo(AnyClass other)
{
    int ret = name.compareTo(other.name);
    return ret != 0 ? ret : Integer.compare(age, other.age);
}

如果你使用番石榴:

@Override
public int compareTo(AnyClass other)
{
    return ComparisonChain.start().compare(name, other.name)
       .compare(age, other.age).result();
}
于 2013-01-13T18:46:58.253 回答
0

((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))

obj.name 是一个字符串,0 是一个 int。那就是你得到错误的地方

于 2013-01-13T18:33:09.730 回答
0

obj.name是 String 并且您正在将其与0.

于 2013-01-13T18:35:00.190 回答
0

如果你用代码解释你的意图会更容易。第一个错误似乎是compareTo obj.name == 0.

尝试

if ((this.name.String.compareTo(obj.name) == 0) && (this.age == obj.age))

这就是我猜你想要实现的目标。

于 2013-01-13T18:36:55.210 回答