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