簡體   English   中英

Java CompareTo方法指出即使沒有使用int,我也無法將int轉換為boolean

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM