2013-12-09 50 views
0

不太瞭解如何以問題的方式實現此功能。這裏是問題可比較的界面作業

創建一個實現Comparable接口的類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

你想讓我們對此做些什麼? –

+0

只是希望一些方向都是 – user2974899

+0

關鍵詞「功課」。我們通常不會做你的功課。抱歉。 – Tdorno

回答

3

Comparable接口包含一個方法:compareTo()。此方法返回描述一個對象與另一個對象進行比較的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 
+0

我認爲他不必執行他們的排序。他呢? –

+0

我不知道。他是否必須執行排序並不重要。我只是評論說,排序是「Comparable」接口存在的原因。 – nhgrif

+0

是!休息是好的解決方案。 +1 –

0

嗯,首先,價格應該是雙,並且評級應該是一個int。看起來你已經倒退了。

但對於實施compareTo,讓我們來看看發生了什麼問:

創建一個類自行車實現Comparable接口。

這很簡單:只需將該類聲明爲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是寬容。