2017-10-09 83 views
0

所以我試圖使代碼通用,我遇到了這個問題,我得到一個錯誤,說二進制運算符的不良操作數類型。二元運算符的不良操作數類型

下面是一個例子:

if(compare(data < root.data)) 

我得到的錯誤上面說的。有關如何解決它的任何提示?

我有這樣的設置在它的開始:

class Node<T> 
{ 
    T data; 
    Node<T> left, right; 

Node(T data) 
    { 
    this.data = data; 
    } 
} 
+0

'if(compare(data,root.data)<0)'? –

回答

0

Java不支持操作符重載,該<運營商定義的基本數據類型,如(INT,雙..)。

它沒有爲非基元類型或用戶定義類型定義。您應該使用Comparable接口而不是<。

0

你叫data < root.data但運營商<或其他類似的運營商只爲原始數據類型intlongdoublefloat定義

您不能在對象上調用<,與支持運算符的其他語言相比


但是你可以讓對象實現Comparabledocumentation),它提供了一個compareTo方法基本上不相同。然後你可以這樣調用:

data.compareTo(root.data); 

,它返回一個 - ,積極 - 或 - 值的基礎上,如果第一個參數是更大等於第二個參數。

所以相當於data < root.data然後將:

data.compareTo(root.data) < 0 

作爲示例類String已實施Comparable,它返回字典順序。 "A".compareTo("B")因此將是否定,這意味着"A"是詞典編碼小於"B"

相關問題