我有一个简单的 if 语句似乎不起作用。我没主意了。我不明白为什么我的逻辑是错误的。
String a = "bf";
if (a.compareTo("bf"))
{
// do this
}
我在compareTo
声明下得到了一条红线。
Type mismatch: cannot convert from int to boolean
我有一个简单的 if 语句似乎不起作用。我没主意了。我不明白为什么我的逻辑是错误的。
String a = "bf";
if (a.compareTo("bf"))
{
// do this
}
我在compareTo
声明下得到了一条红线。
Type mismatch: cannot convert from int to boolean
compareTo
方法返回 int 值。这样做
if (a.compareTo("bf") == 0)
{
//
}
(或者)
使用.equals
方法
if (a.equals("bf"))
{
// do this
}
compareTo 返回一个 int,而不是布尔值。
http://developer.android.com/reference/java/lang/Comparable.html
如果此实例小于另一个实例,则为负整数;如果此实例大于另一个实例,则为正整数;如果此实例与另一个实例具有相同的顺序,则为 0。
所以你应该检查== 0
顺便说一句,它适用于只能订购的东西。如果您只想检查是否相等,请使用 .equals
改成这个
String a = "bf";
if (a.compareTo("bf") == 0)
{
// do this
}
该compareTo
方法返回一个int
值,而不是一个boolean
.
您必须将其更改为
if (a.compareTo("bf") == 0)
或使用
if (a.equals("bf"))
在比较相等性时,您应该使用 equals(),因为它以清晰的方式表达了您的意图。
compareTo() 有一个额外的缺点,它只适用于实现 Comparable 接口的对象。
这通常适用,不仅适用于字符串。
在这里使用类的equals()
方法Object
来比较两个String
对象。
String a = "bf";
if (a.equals("bf"))
{
// do this
}
此外 compareTo()
是java.lang.Comparable
接口的方法。
compareto 返回一个整数。if 语句需要一个布尔值来检查,因此将您的代码更改为:
String a = "bf";
if (a.compareTo("bf")==0)
{
// do this
}