真的不明白如何以问的方式实现这一点。这是问题
创建一个实现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;
}
}
答案 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
是容忍度。