2016-05-07 6 views
1

StringBufferを検索して、_の外観を試してみてください。私のコードは以下の通りですが、実行するとStringBufferの各桁にMatchという文字が表示されます。"if"文で '_' charと比較できないのはなぜですか?

違いがあるのか​​どうかわかりませんが、このコードを学習用Webサイトで実行しているので、純粋なJavaデバッガがありません。私は標準的なエスケープ文字をチェックしていますが、これはアイデアがないためです。

StringBuffer buffer = new StringBuffer(functionName); 
System.out.println(buffer); 
char compare='_'; 
char x; 
for(int i=0;i<buffer.length();i++){ 
    x = buffer.charAt(i); 
    System.out.println(x); 
    if(x==compare); 
    System.out.println("Match"); 
} 

誰でもいいですか?

+0

使用kaanyılmaz@ 'equals'方法ではなく、' == ' –

+8

**間違っ**。 'char'、' == 'はすべてのプリミティブと同様に**適切な**方法です。 – vaxquis

+1

また、FWIW、*どんな*まともなIDEでも、その行について何が間違っているのかを正確に警告します。この場合OPを使用していないというOPの失敗です。また、常にブレースを置くルール/再フォーマットを使用すると便利です。おかげさまで – vaxquis

答えて

6

あなたはあなたのケースのために

if (x == compare) { 
    System.out.println("Match"); 
} 

条件の後;を削除することができれば、それはこのお試しください

if (x == compare); // if `x` and `compare` are equal, we do nothing 
System.out.println("Match"); // it prints out `Match` regardless of the condition 
+1

それだ!卑劣なセミコロン... – GregB

4

問題は、この行にある:

if(x==compare); 

あなたは;のために、ここにあれば文を終了します。したがって、毎回"Match"が印刷されます。

;を削除し、それを作る:

if(x==compare) 

そして、それが正常に動作します。固定

1

StringBuffer buffer=new StringBuffer(functionName); 
System.out.println(buffer); 
char compare='_'; 
char x; 
for(int i=0;i<buffer.length();i++){ 
    x = buffer.charAt(i); 
    System.out.println(x); 
    if(x==compare) System.out.println("Match"); 
} 

;では、あなたは文を終了、それはifで何もしないだろう、と印刷され、次の行に継続されます。あなたは印刷を内部に移動する必要があり、そこに唯一のステートメントがあるので、{}は必要ありません。

問題は、必要がなくても中カッコを使用する必要があるためです。

1

次のようになります。「あなたが追加した場合

StringBuffer buffer=new StringBuffer(functionName); 
System.out.println(buffer); 
char compare='_'; 
char x; 
for(int i=0;i<buffer.length();i++){ 
    x = buffer.charAt(i); 
    System.out.println(x); 
    if(x==compare) 
    System.out.println("Match"); 
} 

を。 ' after if文if next conditionはif条件に入るとは考えられません!

1

if文からセミコロンを削除することを忘れることもありますので、ここで条件演算子を使用する方がよいでしょう。以下はソースコードです。

StringBuffer buffer=new StringBuffer(functionName); 
System.out.println(buffer); 
char compare='_'; 
char x; 
for(int i=0;i<buffer.length();i++){ 
    x = buffer.charAt(i); 
    System.out.println((x==compare)?x+" Match":x); 
} 
関連する問題