2016-05-20 14 views
-2

単語を検閲するプログラムを作成しようとしていましたが、問題がありましたので、基本的なコードに戻ってテストしました。私は奇妙な結果に出くわしています。文字列が特定の文字列と等しいときにプログラムに気づかない

import java.util.Scanner; 

public class TextCensor 
{ 
public static void main(String[] args) 
{ 
     String input; 
     Scanner keyboard = new Scanner(System.in); 
     input = keyboard.nextLine(); 
     int length = input.length() - 1; 

     if (length + 1 >= 3) 
     { 

      for (int i=0; i<(length - 1); i=i+1) 
      { 
       char first = input.charAt(i); 
       char second = input.charAt(i+1); 
       char third = input.charAt(i+2); 

       String censorCheck = "" + first + second + third; 

       if (censorCheck == "tag") 
       { 
        System.out.println("success"); 
       } 
       else 
       { 
        System.out.println(censorCheck); 
       } 
      } 
     } 
     else 
     { 
      System.out.println(input); 
     } 
} 
} 

私は、入力文字列「adtagは、」私は次のような出力が得られます場合:

adt 
dta 
tag 

まだ「成功」に等しい私はcensorCheck印刷されているという事実にもかかわらず、印刷することはありません"タグ"。

+0

使用 '.equals()'値の平等のための – Ian

+0

ようこそスタックオーバーフローします。あなたの次の質問のため...先の研究をする時間を取ってください。あなたはどのくらいの頻度で人々がこの質問をし続けているか信じられません... – GhostCat

+0

@Jägermeisterlold(私はdownvoteが誰から来たのだろう) – Craig

答えて

0

Stringが対象です。あなたはequals()でオブジェクトを比較する必要があります。

censorCheck.equalsIgnoreCase( "タグ")

場合は、同様にモミ上部の手紙を働く無視します。

のみのプリミティブのためにあなたは==による比較を使用することができます。

3 == 3

0

両方の文字列の内容を確認する代わりに、両方の文字列が同じかどうかを確認しようとしています。 censorCheck.equals("tag")を試してください。

0

JAVAで2つの文字列の内容が等しいかどうかを比較するには、equals()メソッドを使用する必要があります。 2つの文字列の値を==演算子で比較することはできません。あなたのケースではif (censorCheck.equals("tag"))を使用して、希望の結果が得られるかどうかを確認してください。

関連する問題