2016-04-11 21 views
0

Ben karşılaştırılabilir ile uygulamak istediğiniz bir Kamu sınıf Hesabınız varsa ve benim sorum şudur:Kamu sınıf <Jenerik türü> uygulayan Karşılaştırılabilir

nasıl düşük denge ile hesap olduğunu yapabilir " En küçük "karşılaştırmamda?.

public class Account implements Comparable<Account>{ 
    private double balance; 
    private String acctNum; 

    public Account(String number, double initBal){ 
     balance = initBal; 
     acctNum = number; 
    } 
    public double getBalance(){ 
     return balance; 
    } 
    ..... 


public int compareTo(Account other) { 
     ???????? 
    } 
+1

Bu yöntem için [docs] (https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html#compareTo%28T%29) okudunuz mu? – resueman

+0

[Bu yöntem] (https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#compare (çift,% 20double)) size yardımcı olabilir. –

cevap

2

compareTo yöntem döndürmelidir:

  • negatif tamsayıdır, bu diğer daha az ise,
  • sıfır, bu veya daha fazla, diğer
  • pozitif tam sayıya eşit olup olmadığını diğer

Değerler return this.balance - other.balance yapılıyorsa geçersiz sonuçlar verebilir. Double.MAX_VALUE veya Double.MIN_VALUE yakın, bu nedenle Double.compare kullanmalısınız:

public int compareTo(Account other) { 
    return Double.compare(this.balance, other.balance); 
} 
0

uygulamak için en basit yolu balance için türü olarak bir Double kalış çağırmaktır compareTo yöntemi:

return balance.compareTo(other); 

değilim Bunun en iyisi olduğunu söyler ama bir başlangıç ​​için yeterlidir.

Uygulamak için null s kullanımının size ait olduğunu unutmayın.

+0

Bu, derleme yapmaz. Otomatik kutulama bu şekilde çalışmıyor. –

+0

@AndyTurner “Double” kullan diyor. Derleme yapmaz çünkü “diğer” bir “Double” değildir. –

+0

@PaulBoddington, "denge" bir "çifte" değil, "çifte" olduğu için derlemez ve "çifte" ile "compareTo" çağıramazsınız. –