2014-02-16 69 views
0

我需要一種將分數放入ArrayList的方法。然而,我遇到了問題,因爲我不知道該如何做到這一點,以便我稍後可以對它們進行比較,以便對它們進行排序。如何創建分數列表?

注:我將用4個或更多的分數,我也不太清楚如何(如果可能)使用可比類做超過2

例如: 我需要輸入1/1,3/4,7/4,2/8

然後我需要從最小到最大來對它們進行排序(使用列表)。

任何幫助表示讚賞。

+2

以及你能告訴我們你已經擁有? – Mozzie

+1

你想保留分數的原始表示,還是將它們轉換爲浮點數? –

+0

我並沒有太多的價值,因爲這是一個項目的開始。我需要爲視覺目的保留表示,但是如果它被轉換爲排序順序,我想它不會有太大的區別。 – user3006216

回答

1
public class Fraction implements Comparable<Fraction> { 
    private int x1, x2; // implement get/set 

    public int compareTo(Fraction o) { 
     double tmp = Math.abs((double)x1/x2 - (double)o.x1/o.x2); 
     if (tmp < 0) return -1; 
     if (tmp < 1e-9) return 0; 
     return 1; 
    } 
} 

現在:

ArrayList<Fraction> f; 
Collections.sort(f); 
2

創建一個名爲Fraction的類,該類存儲兩個變量:分子和分母。 然後,您可以創建分數的ArrayList。

如果您想輕鬆地對它們進行排序,最好的方法是讓它實施Comparable

1

你可以做兩種方式首先你可以把分數作爲浮點值以其他方式表示分數值,然後再拍類實現接口比較。而再使用集合排序類。