Java比较问题
intix1和iY1只是在程序开始时声明的一些变量。我必须将Java比较问题,java,Java,intix1和iY1只是在程序开始时声明的一些变量。我必须将int area与作为参数提交的r进行比较。我遇到的问题是,区域无法与比较对象时使用的=进行比较。运算符=比较引用,因此只有当两个引用引用同一对象时,结果才可能为真。您可能应该调用equals()。如果对象是您想要定义的某种类,请使其具有一个可以与INTEGER进行比较的值,如果它确实是Java的类“对象”,则无法进行这样的比较 您正在尝试将int值与对象进行比较。您需要将r强制转换为区域,然后比较区域字段 int Area() {
int area
与作为参数提交的r
进行比较。我遇到的问题是,区域
无法与比较对象时使用的=进行比较。运算符=
比较引用,因此只有当两个引用引用同一对象时,结果才可能为真。您可能应该调用equals()
。如果对象是您想要定义的某种类,请使其具有一个可以与INTEGER进行比较的值,如果它确实是Java的类“对象”,则无法进行这样的比较 您正在尝试将int值与对象进行比较。您需要将r强制转换为区域,然后比较区域字段
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;
}
}
此代码还有其他问题。类的声明不能像这样,而是应该编写
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;
}
}
代码片段看起来像是要实现一个类,让我们将其命名为YourType
,其中两个实例可以通过比较计算值(区域)来排序。典型的方法是实施:
你不能对对象
s执行算术运算。那么我该如何比较它们呢?你需要读一本“Head first core java”的书。Sry我对Java有点陌生
int newR = ((Integer) r).intValue();
int compareTo(Object r) {
if(newR==area) {
return 0;
}
if (newR>area) {
return 1;
}
else {
return -1;
}
}
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;
}
}
}
int compareTo(YourType other) {
return Integer.valueOf(Area()).compareTo(Integer.valueOf(other.Area()));
}