2017-08-20 5 views
-2

こんにちは、私にエラーを与えてprintlnしかし、私はそれらを別々に印刷するとうまくいきます。どんなアイデアなのでしょう?事前にJavaで実行時のブール値と文字列エラー?

class StringTesting 
{ 
public static void main(String me[]) 
{ 
    String s1="Varun"; 
    String s2="varun"; 
    String s3="Varun"; 
    String s4=new String("Varun"); 
    String s5=new String("Varun"); 
    System.out.println(" "+s1==s3+" "+s1==s2+" ");//here its giving me error 
} 
} 

も感謝:)

+0

'=='はあなたがそれから期待しているような優先順位を持っていません。 – user2357112

+0

(優先順位が '+"(s1 == s3)+ "" +(s1 == s2)+ "" ')になることを前提としていると仮定した場合 – user2357112

+0

*何*エラー? – EJP

答えて

0

operatorsに関しては、+==に優先しています。

それは、このコードことを意味します

" "+s1==s3+" "+s1==s2+" " 

はそのようなことで、コンパイラによって翻訳されています

" Varun"=="Varun Varun"=="Varun " 

最初の部分" Varun"=="Varun Varun"boolean

と、それに適用さを作り出します==コンパレータを使用した"Varun " Stringの場合、結果は次のようになります。

booleanExpression == "Varun " 

booleanStringを比較することは無効です。
とにかく、たとえそうであったとしても、オブジェクト間の==比較のブール値の結果を出力したいとは思わないでしょう。

" "+(s1==s3)+" "+(s1==s2)+" " 

は、それが有効な連結を生成します:だから間に置く

は、操作中は一緒に評価する必要があるコンパイラに指示し==比較を括弧

String + boolean + String + boolean + String

0

あなたは==を使用してブール値と文字列を比較することはできません、これは確かにそこにいるためのを適用されている演算子の順番を何が起こっているかです。

あなたは、単純なカッコ使用していることを修正することができます。うまく動作します。もちろん、

System.out.println(" " + (s1 == s3) + " " + (s1 == s2) + " "); 

、次の2つの異なるオペレータの結果を結合していない場合は、:だから

System.out.println(s1 == s3); 

を、それがありましたコンパイルエラーを読み込むだけで十分です。

+0

しかし、このSystem.out.println(s1 == s3)を実行しているときは正常に動作しています。 –

+0

@VARUNSINGH演算子が1つしかないため、演算子の優先順位が「+」と「==」を組み合わせると問題が発生します。 –

+0

どうすればそれを見逃すことができますか? –

0

文字列に関するJavaのドキュメントによると、2つの文字列を比較する適切な方法は、.equalsメソッドを使用することです。オブジェクトに含まれるメモリ位置ではなく、実際のプリミティブ値(S)を比較している2つのオブジェクト間の==演算子を使用することにより

System.out.println("s1 == s2 ?: " + s1.equals(s2)) 

+0

私は申し訳ありませんが、私は完全に質問を誤解しました。私はこの答えを削除しようとしているが、それは関連性はないが、明らかに電話アプリにはそのボタンがない。 – AWildBeard

+0

あなたは何を待っていますか? – AsifAli72090

+0

削除ボタンがないため、アプリに表示されません。 – AWildBeard

関連する問題