Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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_Object_Methods_Parameters_Compare - Fatal编程技术网

Java使用一个参数比较对象

Java使用一个参数比较对象,java,object,methods,parameters,compare,Java,Object,Methods,Parameters,Compare,我正在自学java,不能完全理解这个问题。假设我有两个对象,想用一个方法比较它们。 在不更改方法中的参数数量的情况下,如何做到这一点 我似乎无法将另一个动物的参数引入该方法,因为它只接受参数。这与可比性有关吗 public class Animal { private double size; private double length; public Animal(double size, double length) { this.size = size; th

我正在自学java,不能完全理解这个问题。假设我有两个对象,想用一个方法比较它们。 在不更改方法中的参数数量的情况下,如何做到这一点

我似乎无法将另一个动物的参数引入该方法,因为它只接受参数。这与可比性有关吗

public class Animal {
  private double size;
  private double length;

  public Animal(double size, double length) {
    this.size = size;
    this.length = length;
  }

  public compareSize(Animal animal) {
    //if (dog.size <  animal.size)
      //return 0;
    //return 1;
  }

  public static void main(String[] args) {
    Animal cat = new Animal(100.0,30.1);
    Animal dog = new Animal(200.0, 09.5);
    System.out.println(dog.compareSize(cat));
  }
}
公共类动物{
私人双户型;
私人双倍长度;
公共动物(双倍大小,双倍长度){
这个。大小=大小;
这个长度=长度;
}
公共比较(动物){
//如果(狗的尺寸<动物的尺寸)
//返回0;
//返回1;
}
公共静态void main(字符串[]args){
动物猫=新动物(100.0,30.1);
动物狗=新动物(200.0,09.5);
System.out.println(dog.compareSize(cat));
}
}

您可以按如下方式重写该方法:

public int compareSize(Animal animal){
if (this.size < animal.size){
    return -1;
}else if(this.size > animal.size){
    return 1;
}
return 0;
}

虽然就编码标准而言,使用比较器会更好,但您可以在此处了解比较器的更多细节:但您必须将两个参数传递到比较器。

您可以按如下方式重写该方法:

public int compareSize(Animal animal){
if (this.size < animal.size){
    return -1;
}else if(this.size > animal.size){
    return 1;
}
return 0;
}

虽然在编码标准方面,使用比较器会更好,但您可以在这里了解比较器的更多细节:但您必须将两个参数传递到比较器。

您可以在类
动物
中定义方法
compareSize

在Java(以及所有其他OOP语言)中,当您对对象调用方法时,可以使用
this
关键字访问该对象

当您调用
dog.compareSize(cat)
时,您正在对
dog
对象调用
compareSize
,因此在您的方法
中,此
将引用
dog
对象

因此,您需要比较
this.size
animal.size

接口与此无关。 Comparable接口通过定义
compareTo
方法,允许类具有可比性。需要使用有用的方法,例如

此外,您需要在
compareSize
方法中定义返回类型,其签名应为:
public int compareSize(Animal-Animal)

您可以在类
Animal
中定义方法
compareSize

在Java(以及所有其他OOP语言)中,当您对对象调用方法时,可以使用
this
关键字访问该对象

当您调用
dog.compareSize(cat)
时,您正在对
dog
对象调用
compareSize
,因此在您的方法
中,此
将引用
dog
对象

因此,您需要比较
this.size
animal.size

接口与此无关。 Comparable接口通过定义
compareTo
方法,允许类具有可比性。需要使用有用的方法,例如

此外,您需要在
compareSize
方法中定义返回类型,其签名应为: public int compareSize(Animal-Animal)

您的
compareSize()
方法可以是:

public int compareSize(Animal animal){
    return Double.compare(this.size, animal.size);
}
您的
compareSize()
方法可以是:

public int compareSize(Animal animal){
    return Double.compare(this.size, animal.size);
}

试试:
this.size
。试试:
this.size
。哦,我明白了。方法中缺少返回类型是一个输入错误,但是我对.this引用有一些混淆。现在我觉得我“明白了”。非常感谢,这感觉真的很重要!感谢所有其他的答案!哦,我明白了。方法中缺少返回类型是一个输入错误,但是我对.this引用有一些混淆。现在我觉得我“明白了”。非常感谢,这感觉真的很重要!感谢所有其他的答案!