簡體   English   中英

可比的界面作業

[英]Comparable interface homework

不太了解如何以要求的方式實施此操作。 這是問題

創建一個實現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;
}

}

Comparable接口包含一個方法: compareTo() 此方法返回一個int ,該int描述一個對象與另一個對象的比較方式。

它通常用於對將調用此方法的對象的集合進行排序,因為返回的int的值將告訴調用方這兩個對象所屬的順序。

如果compareTo方法返回負值,則調用該方法的對象位於用作參數的對象之前。 如果compareTo返回一個正數,則調用該方法的對象位於該對象之后。 如果compareTo返回0,則將對象視為相等,並且順序無關緊要。

您的作業要求您實現Comparable並重寫compareTo方法,以便按其價格對Bike類的對象進行排序。 給定bikeA的價格為兩美元, bikeB的價格為三美元, bikeC的價格為三美元:

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

好吧,首先,價格應該是兩倍,而評級應該是整數。 看來您倒退了。

但是,為了實現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是公差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM