int Area() {
int area=iX1*iY1;
return area;
}
int compareTo(Object r) {
if(r==area) {
return 0;
}
if (r>area) {
return 1;
}
else {
return -1;
}
}
int iX1和iY1只是在程序开头声明的一些变量。我必须将int area
与提交的参数r
进行比较。我得到的问题是area
无法与r
答案 0 :(得分:1)
您在比较对象时使用==
。运算符==
比较引用,因此仅当两个引用都引用相同的对象时,结果才可能为真。您可能应该调用equals()
。
答案 1 :(得分:0)
如果Object是你要定义的某种类,那么使它有一个可以与interger比较的值,如果它真的是Java的Class“Object”,就没有办法进行这样的比较。
答案 2 :(得分:0)
您正在尝试将int值与object进行比较。您需要将r转换为Area,然后比较区域字段
Area areaObject = (Area)r;
if(areaObject.area == this.area) {
return 0
}
此代码还有其他问题。类的声明看起来不像你应该写的
class Area {
private int area;
public Area(int x, int y) {
area = x * y;
}
}
答案 3 :(得分:0)
假设对象是一个Integer对象,那么你可以这样做:现在你可以比较。
int newR = ((Integer) r).intValue();
int compareTo(Object r) {
if(newR==area) {
return 0;
}
if (newR>area) {
return 1;
}
else {
return -1;
}
}
答案 4 :(得分:0)
您的代码片段看起来像要实现一个类,让我们将其命名为YourType
,其中可以通过比较计算值(区域)来排序两个实例。典型的方法是实施Comparable:
class YourType implements Comparable<YourType> {
private int iX1, iY1;
...
int Area() {
return iX1*iY1;
}
int compareTo(YourType other) {
int myArea = Area();
int otherArea = other.Area();
if (otherArea == area) {
return 0;
}
if (otherArea > area) {
return 1;
} else {
return -1;
}
}
}
compareTo()方法旨在比较两个相同类型(或超类型)的对象,而不是苹果与梨。如果您错过了泛型参数,编译器会将Object视为要比较的类型,而这几乎是无用的。
最简单的实现方式是:
int compareTo(YourType other) {
return Integer.valueOf(Area()).compareTo(Integer.valueOf(other.Area()));
}