Java CompareTo 方法声明我无法将 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。我明白了,但问题是我正在使用 netiher。我只想比较2个简单的字符串,为什么会这样?
你应该注意到接口 'compareTo' 是 returning 一个 int 'public int compareTo' 作为符号
if 语句依赖于布尔值,但是您使用 thisId.compareTo(personStr) 它将 return 一个整数,就像您正在创建的方法一样。
您的第一个 if 语句没问题 - 'equals' return 是一个布尔值。但是第二个没有,它可能 return -1、0 或 1。
but the thing is that I'm using netiher
你确定吗?
这导致 int
:
thisId.compareTo(personStr)
但您将其用作 Boolean
:
if (yourResult)
if
语句需要一个布尔值,它不能只用于任何值。例如,考虑这两者之间的区别:
if (value == 1)
还有这个:
if (value)
在某些语言中,您可以避免这种情况。某些语言将 "truthiness" 的度数分配给所有类型,允许您在布尔表达式中使用它们。 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);
}
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。我明白了,但问题是我正在使用 netiher。我只想比较2个简单的字符串,为什么会这样?
你应该注意到接口 'compareTo' 是 returning 一个 int 'public int compareTo' 作为符号
if 语句依赖于布尔值,但是您使用 thisId.compareTo(personStr) 它将 return 一个整数,就像您正在创建的方法一样。
您的第一个 if 语句没问题 - 'equals' return 是一个布尔值。但是第二个没有,它可能 return -1、0 或 1。
but the thing is that I'm using netiher
你确定吗?
这导致 int
:
thisId.compareTo(personStr)
但您将其用作 Boolean
:
if (yourResult)
if
语句需要一个布尔值,它不能只用于任何值。例如,考虑这两者之间的区别:
if (value == 1)
还有这个:
if (value)
在某些语言中,您可以避免这种情况。某些语言将 "truthiness" 的度数分配给所有类型,允许您在布尔表达式中使用它们。 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);
}