可比的界面作业

时间:2013-12-09 01:16:02

标签: java comparable compareto

真的不明白如何以问的方式实现这一点。这是问题

创建一个实现Comparable接口的类Bike。您应该在Bike类,颜色,价格,制造商,型号和评级中具有以下属性。您应该根据价格进行比较。使用公差值0.0001比较它们。编写一个主驱动程序,通过创建自行车来测试程序,在控制台上收集信息。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Program3 {
public static void main(String[] args) {
    Bike b1 = new Bike(300,"red","schwin","mountain crusher",8.6);
    Bike b2 = new Bike(500,"black","cassio","road dominator",12.5);
    Bike b3 = new Bike(200,"blue","rolex","blue diamond",4.3);
    Bike b4 = new Bike(1524500,"silver","military","spy bike",143.2);

    List<Bike> bike = new ArrayList<Bike>();
    bike.add(b1);
    bike.add(b2);
    bike.add(b3);
    bike.add(b4);


    System.out.println(bike);

    Collections.sort(bike);

    System.out.println(bike);



 public class Bike {
private int price;
private String color,brand,model;
private double rating;

public Bike(int price, String color, String brand, String model, double rating) {
    this.price=price;
    this.color=color;
    this.brand=brand;
    this.model=model;
    this.rating=rating;
}

}

2 个答案:

答案 0 :(得分:3)

Comparable接口包含一个方法:compareTo()。此方法返回int,描述一个对象与另一个对象的比较。

它通常用于对要调用此方法的对象集合进行排序,因为返回的int的值将告诉调用者这两个对象属于哪个顺序。

如果compareTo方法返回负数,则调用该方法的对象位于用作参数的对象之前。如果compareTo返回正数,则调用该方法的对象将在对象之后。如果compareTo返回0,则认为对象相等且顺序无关紧要。

您的作业要求您实施Comparable并覆盖compareTo方法,以便按价格对Bike类的对象进行排序。给定bikeA价格为2美元,bikeB价格为3美元,bikeC价格为3美元:

bikeA.compareTo(bikeB) //should return negative
bikeB.compareTo(bikeA) //should return positive
bikeC.compareTo(bikeB) //should return 0

答案 1 :(得分:0)

嗯,首先,价格应该是一个双倍,评级应该是一个int。看起来你倒退了。

但是为了实现compareTo,让我们看一下被问到的内容:

  

创建一个实现Comparable接口的类Bike。

这很简单:只需将课程声明为public class Bike implements Comparable

  

您应该根据价格进行比较。

所以?如果您无法理解compareTo方法,可以采取以下措施:

  

将此对象与指定的订单对象进行比较。返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。

这是该方法应该做的官方描述。

  

使用公差值0.0001比较它们。

您可能需要一些帮助。 double值不准确,必须与非精确度的容差进行比较。例如,表达式0.1 == (0.2 - 0.1)实际上因此而评估为false。所以相反,你可以尝试这样的事情:

(0.1 - (0.2 - 0.1)) < 0.0001

在这里,我们只是采取差异,看看它是否小于一定数量。 0.0001是容忍度。