2016-10-05 24 views
0

私は今、Javaを学んでいます。私はSE6の日付までの本を持っています。文字列のブール比較

は、2つの文字列引数を取り、2つの文字列を比較し、その結果を印刷するには、すべてのブール比較を使用する方法を書く: は今私を尋ねる運動があります。 main();いくつかの異なるStringオブジェクトでメソッドを呼び出します。私は

をしようとしたとき:

public static void compare(String a, String b){ 
    System.out.println(a>b); 
} 

私はエラーが述べました> operator is not valid for type String

今私の質問です - この本には、日付と何か以降に変更、または私は何かを誤解しています外の場合仕事?

+0

単純にa.equals(b)を使用します。 –

+0

ブール演算子は実際にはStringオブジェクトには有効ではないため、そこには驚きはありません。この演習では、演算子ではなくブール値の比較を行うので、String Booleanメソッドの動作(等価、包含、startsWithなど)を調べることを意図していると想像します。 –

+0

uint use、、 PKR

答えて

1

私はたとえば、あなたが文字列比較の独自の実装を提供するために、このタスクを意味したと思います。

for (int i = 0; i < Math.max(a.length(), b.lentgh(); i++) { 
    if (a[i] < b[i]) { 
    System.out.println("a < b"); 
    return; 
    } 
    // ... 

文字列はオブジェクトではなくプリミティブであり、比較演算子と比較することはできません。 compareTo(String anotherString)メソッドがStringに組み込まれ、文字列が字句的に大きい場合に応じて数値が返されます。

+1

assignemntの解釈についての推測を脇に置いておくと、少なくともmaxではなく 'Math.min(a.length()、b.lentgh()) 'を使うべきです、あるいは、' StringIndexOutOfBoundsException '。 –

+0

もちろん、ありがとう! –

0

Javaの文字列には、関係演算子(<、< =、>、> =)は使用できません。 Javaは演算子のオーバーロードに依存しません。

文字列を比較するのにcompareToメソッドを使用できます。 引数がこの文字列と辞書的に等しい文字列の場合は値0、引数がこの文字列よりも辞書的に大きい文字列の場合は、0より小さい値。引数がこの文字列よりも辞書的に小さい文字列の場合は、0より大きい値