Java比较问题

Java比较问题,java,Java,intix1和iY1只是在程序开始时声明的一些变量。我必须将int area与作为参数提交的r进行比较。我遇到的问题是,区域无法与比较对象时使用的=进行比较。运算符=比较引用,因此只有当两个引用引用同一对象时,结果才可能为真。您可能应该调用equals()。如果对象是您想要定义的某种类,请使其具有一个可以与INTEGER进行比较的值,如果它确实是Java的类“对象”,则无法进行这样的比较 您正在尝试将int值与对象进行比较。您需要将r强制转换为区域,然后比较区域字段 int Area() {

intix1和iY1只是在程序开始时声明的一些变量。我必须将
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()));
  }