Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的不可比较类型_Java - Fatal编程技术网

java中的不可比较类型

java中的不可比较类型,java,Java,我得到了这段代码,对于这行代码,我得到了一个错误不可比较的类型:java.lang.String和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

我得到了这段代码,对于这行代码,我得到了一个错误
不可比较的类型:java.lang.String和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;
}

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

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


obj.name是一个字符串,0是一个int。这就是错误所在

无法将字符串与整数进行比较:)

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


请参阅或。

obj.name
是字符串,您正在将其与
0
进行比较

我觉得你的支架位置不对

this.name.String.compareTo(obj.name == 0)) 
obj.name==0是比较字符串(name)和int(0)的地方。我猜您想在obj.name上使用compareTo,然后检查它是否等于零

我也认为在第二部分

(this.age = obj.age)
您希望使用==而不是=,因此我认为您希望使用的代码是:

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

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

试一试

这就是我想你想要实现的。

我认为代码

 if ((this.name.String.compareTo(obj.name == 0)) && (this.age = obj.age))
实际上应该是这样读的

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

更改
==0
的位置(并将第二个
=
更改为
=
)可以使此代码变得有意义。

此实现存在许多问题。看起来这是类
AnyClass
Comparable
实现,这意味着签名是错误的

AnyClass
应该实现
compariable
,代码应该如下所示:

@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();
}

使用此-
this.name.String
,您想要实现什么?这里是打字错误吗?我不太确定,我收到了这段代码,最初是这个.name.compareTo(),但在其他地方找到了这个.name.String,我认为这可能会有所帮助,这个.name.compareTo()给出了相同的错误如果这是
AnyClass
可比
的实现,则签名为“关闭”:它应该是
AnyClass
参数,而不是
对象
。正确,但从
this.name.String.compareTo(obj.name)==0)中删除
字符串
非常感谢,修复了此问题!我必须像倒下一样把绳子取下来said@PawełChorążyk不客气,我键入了与您相同的答案:)
@Override
public int compareTo(AnyClass other)
{
    return ComparisonChain.start().compare(name, other.name)
       .compare(age, other.age).result();
}