2016-10-16 2 views
-2

を返す:文字列の最後の文字である場合、このコードはチェックしなければならないん何のJavaのequals()私はこのコードを持っている

if(!((s.substring(s.length() - 1)).equals(";"))){ 
    s = s + ";"; 
} 

を「;」そうでない場合はセミコロンを追加する必要があります。まったく同じことを行うだけです。文字列が既に1で終わっている場合はセミコロンが追加されます。感嘆符を取り除くと私のコードが動作します。どのように可能です、私はドキュメントを読んで、2つの式が等しい場合は.equals()が真を返すべきです。何か不足していますか?ありがとう

+3

[String.endsWith(文字列のサフィックス)](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#endsWith (java.lang.String)) – tkausl

+1

コードはOKです。最小限の 'main'メソッドでこのコードを試しましたか?ちょうど_this_コードが本当に問題であることを確認してください。 –

+0

また、コードを**デバッグ**しようとしましたか?あなたがペーストしたスニペットにエラーがあるとは思わない。 –

答えて

1

このような文は、別々の行に分割すると、デバッグがずっと簡単になります。次に、Eclipseや他のIDEの中に見られるように、あなたは、デバッガを使用するか、または古い学校のデバッグのために、あなたはPS

int len = s.length(); 
// Log or print value of `len` 
String sub = s.substring(len - 1); 
// Log or print value of `sub` 
boolean endsSemiColon = sub.equals(";"); 
// Log or print value of `endsSemiColon` 
if(!endsSemiColon) { 
    s = s + ";"; 
} 

あるか

ではありませんどのような変数表示する各ラインを記録したり、print文することができます:

  • tkauslが言ったように、この仕事はs.endsWith(";")
  • s = s.concat(";")で最高の行われているがs = s + ";"
よりもはるかに高速であります
1
if(!s.endsWith(";")){ 
    s = s + ";"; 
} 

又は

if(s.charAt(s.length()-1) != ';'){ 
    s = s + ";"; 
} 
関連する問題