2014-03-30 65 views
0

我目前正在從事大學任務。我有一段代碼,如下所示。如何比較Java中的兩個「Comparable」類型變量?

if(temporary > left) { } 

臨時變量和左變量都是「Comparable」類型。我的問題是,我怎麼能比較這兩個?它們總是保持整數值,但是賦值迫使我將它們聲明爲「可比較」類型。

任何幫助非常感謝,因爲我很困惑這一點。謝謝!

+0

看一看的JavaDoc:http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html – Zyn

回答

2

如果你看看http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html,你就會知道,compareTo()方法是你所需要的。

您可以使用temporary.compareTo(left)並使用該值與0進行比較。

在臨時temporary.compareTo(left)中執行compareTo(),使其返回負整數,零或正整數,因爲臨時值小於,等於或大於左值。

+0

儘管在compareTo方法中,如何設置它以便我可以返回0或1,如果其中一個參數大於或小於另一個? – Vimzy

+0

您需要實現'compareTo()',使得如果調用對象少於作爲參數傳遞的對象,則該方法返回負整數,如果它們相等則返回零,如果調用對象大於參數 – anirudh

+0

編輯了答案以解釋它如何適用於您的呼叫 – anirudh

0

在Java中,接口只能聲明方法。 Comparable接口聲明compareTo方法。所以:

temporary.compareTo(left) 
+0

所以在compareTo方法中,我會有兩個參數,並比較兩個傳遞的參數,但我選擇? – Vimzy

+0

如果這些變量是一個已經定義好的類型並實現了Comparable,那麼它們可以使用自己的邏輯進行比較(整數有自己的邏輯,自己的浮點數等等)。如果這些變量是您定義的自定義類型,那麼您需要轉到其類的定義並定義一個描述比較邏輯的「compareTo」方法。 –

0

考慮下面的類爲例:

public class Boot implements Comparable<Boot> { 

    int size; 

    public Boot(int size) { 
     this.size = size; 
    } 

    public int getSize() { 
     return size; 
    } 

    @Override 
    public int compareTo(Boot boot) { 
     if (boot.getSize() > size) { 
      return -1; 
     } else if (boot.size == size){ 
      return 0; 
     } else { 
      return 1; 
     } 
    } 

}