[英]Java CompareTo method states I cannot convert int to boolean even though neither is used
public int compareTo(Person p) {
int res = 1;
String personStr = p.getId();
String thisId = this.getId();
if(thisId.equals(personStr)){
res = 0;
}
else if(thisId.compareTo(personStr)){
res = -1;
}
return res;
}
我已經實現了一個非常簡單的compareTo方法,但是沒有收到錯誤消息。 else if statemint中的條件告訴我一條消息,即它不能從int轉換為boolean。 我明白了,但事實是我正在使用網絡瀏覽器。 我只想比較2個簡單的字符串,為什么會發生這種情況?
您應該注意的是,接口“ compareTo”返回一個int“ public int compareTo”作為符號
if語句依賴於布爾值,但是您可以使用thisId.compareTo(personStr)來返回整數,就像您創建的方法一樣。
您的第一個if語句很好-“等於”返回布爾值。 但是第二個不是,它可能返回-1、0或1。
但問題是我正在使用網絡瀏覽器
您確定嗎?
這導致一個int
:
thisId.compareTo(personStr)
但是您將其用作Boolean
:
if (yourResult)
if
語句需要一個布爾值,它不能僅用於任何值。 例如,考慮一下兩者之間的區別:
if (value == 1)
和這個:
if (value)
在某些語言中,您可以避免這種情況。 某些語言為所有類型分配“真實性”程度,從而允許您在布爾表達式中使用它們。 Java不是其中之一。 您必須在Java中明確定義布爾邏輯:
if(thisId.compareTo(personStr) > 0) // or whatever your logic should be
如果您只想比較這兩個字符串,為什么不使用
public int compareTo(Person p) {
String personStr = p.getId();
String thisId = this.getId();
return thisId.compareTo(personStr);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.