2017-04-18 9 views
0

粒度の値がブロックである以下のコード部分があります。値を比較すると、常にNOが表示されます。ここ同じ文字列が等しくない

System.out.println(granularity); 
    System.out.println(granularity.equalsIgnoreCase("block")?"YES":"NO"); 

    if(granularity.equalsIgnoreCase("BLOCK")){..... 

コードの出力である:

block 
NO 

粒状値はここ

granularity = prop.getProperty("Granularity"); 

ようにプロパティファイルから取得されるプロパティファイルのスナップである:

can be canなぜ2つの文字列が等しくないのか説明してください。

+2

でそれを格納しながら。コンパイル時にすべての空白を乗り越えるにはtrim()を実行してください。 –

+2

'System.out.println(" '"+ granularity +"' ");'印刷できない文字を表示してみてください。 – Zorglube

+0

空白を削除してみます。 granularity.replaceAll( "\\ s +"、 "")。equalsIgnoreCase( "block")? "YES": "NO"); – Sasang

答えて

4

空白が比較を妨害している可能性があります。冒頭で次の操作を行います。

Granularity = block 

" block"につながる:プロパティファイルから

granularity = granularity.trim(); 
+0

このようにすると、プロパティの先頭または最後に意図的に配置される可能性がある空白は破棄されます。より良い解決策は、プロパティの内容を目的の値に設定することです。 –

2

性質が=

ので、これはストレートの後に自分の価値を持っています。あなたのファイルは、に変更します。ここでは

Granularity=block 
1

コードの出力です:

ブロック NO

あなたは慎重にあなたの出力を調べる場合は、ワードブロックの後に空白がありますしたがって、それは"block "です。 @ p-j-meischコメントの後に編集
あなたの入力から" block"が得られます。あなたが"block"とそれを比較するとき、あなたは偽を得る。

この行を追加してくださいgranularity = granularity.trim()

+1

問題は、_after_ではなく、単語ブロックの前のスペースです –

0

コードでは常にtrimの文字列にするのがベストプラクティスであり、特にユーザーからの入力として使用されている場合があります。

granularity.trim().equalsIgnoreCase("block")... 

や粒状の文字列の末尾にスペースがあるgranularity

String granularity = someInputString.trim(); 
関連する問題