2

我有一个简单的 if 语句似乎不起作用。我没主意了。我不明白为什么我的逻辑是错误的。

String a = "bf";

if (a.compareTo("bf"))
{
    // do this
}

我在compareTo声明下得到了一条红线。

Type mismatch: cannot convert from int to boolean

4

7 回答 7

2

compareTo方法返回 int 值。这样做

if (a.compareTo("bf") == 0)      
{
    //
} 

(或者)

使用.equals方法

if (a.equals("bf"))

{
// do this
}
于 2012-10-01T08:27:13.693 回答
1

compareTo 返回一个 int,而不是布尔值。

http://developer.android.com/reference/java/lang/Comparable.html

如果此实例小于另一个实例,则为负整数;如果此实例大于另一个实例,则为正整数;如果此实例与另一个实例具有相同的顺序,则为 0。

所以你应该检查== 0

顺便说一句,它适用于只能订购的东西。如果您只想检查是否相等,请使用 .equals

于 2012-10-01T08:27:15.097 回答
1

改成这个

String a = "bf";  
if (a.compareTo("bf") == 0)      
{
 // do this     
} 
于 2012-10-01T08:27:43.890 回答
1

compareTo方法返回一个int值,而不是一个boolean.

您必须将其更改为

if (a.compareTo("bf") == 0)

或使用

if (a.equals("bf"))
于 2012-10-01T08:29:33.560 回答
1

在比较相等性时,您应该使用 equals(),因为它以清晰的方式表达了您的意图。

compareTo() 有一个额外的缺点,它只适用于实现 Comparable 接口的对象。

这通常适用,不仅适用于字符串。

于 2012-10-01T08:30:21.553 回答
1

在这里使用类的equals()方法Object比较两个String对象。

String a = "bf";

if (a.equals("bf"))
{
    // do this
}

此外 compareTo()java.lang.Comparable接口的方法。

于 2012-10-01T08:44:41.470 回答
1

compareto 返回一个整数。if 语句需要一个布尔值来检查,因此将您的代码更改为:

String a = "bf";

if (a.compareTo("bf")==0)
{
  // do this
}
于 2012-10-01T08:48:47.910 回答