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

同等性を比較するときは、equals()を使用する必要があります。これは、意図が明確に表現されているためです。

compareTo()には、Comparableインターフェイスを実装するオブジェクトでのみ機能するという追加の欠点があります。

これは、文字列だけでなく、一般的に適用されます。

于 2012-10-01T08:30:21.553 に答える
1

このcompareToメソッドは、intではなく値を返しますboolean

次のように変更する必要があります

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

または使用する

if (a.equals("bf"))
于 2012-10-01T08:29:33.560 に答える
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 は整数を返します。if ステートメントはブール値をチェックする必要があるため、コードを次のように変更します。

String a = "bf";

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

クラスequals()のメソッドを使用して、ここで2 つのオブジェクトを比較します。ObjectString

String a = "bf";

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

さらに インターフェースcompareTo()の方法です。java.lang.Comparable

于 2012-10-01T08:44:41.470 に答える