2017-05-23 3 views
0

このメソッドでは、文字ファイルbuildWordはif(this.guessedLetters.contains(buildWord))で使用されます。メインファイルでtestProgramを実行すると、不正な結果が得られますが、手動でif(this.guessedLetters.contains("" + letter))を使用すると動作します。私の質問は、違いは何ですか?なぜこの二つのない同じ:if(this.guessedLetters.contains(buildWord))、およびif(this.guessedLetters.contains("" + letter))文字をJavaで文字列に変更する

public String hiddenWord() { 
    char letter = ' '; 
    String hiddenWord = ""; 
    String buildWord = "" + letter; 
    int i = 0; 
    while (i < this.word.length()) { 
     letter = this.word.charAt(i); 
     if (this.guessedLetters.contains(buildWord)) { // ********** 
      hiddenWord += letter; 
     } else { 
      hiddenWord += '_'; 
     } 
     i++; 
    } 
    return hiddenWord; 
} 
+0

値は、値は、メインメソッドからのものである「A」「D」「S」「F」「D」、後喫茶 –

答えて

2

差がletterがループ内で更新されますということですが、buildWordないと常に文字列" "に等しいです。あなたは、再割り当てletterbuildWord = "" + letter;を追加する場合、それは動作します:How to convert a char to a String?

+0

チュートリアルから使用される単語それが動作するように変更すると、私はちょうどまだ混乱しています、チャー文字は更新された値を保持しています、どうすれば** 'String buildWord =" "+ letter;' **も同様に更新されませんか?例えば、** 'char letter = 'K'; **が更新された場合、**' buildWord = "" + letter; '**は**' buildWord = "" + 'K' ; **などの文字が更新されていますか? –

+0

いいえ 'buildWord =" "+ letter"を設定すると、 'letter'の**現在の値**を取得し、それを空文字列と連結します。 'buildWord'を' letter'の変更として更新することはありません。もし '' letter 'が変更されたときに '' buildWord''を更新しなければならないと思いますか?新しいデータベース値を取得したり、古いキャッシュ値を使用したりすることで、どのように更新されますか? 'GetDatabaseValue()'が変更されるとどうなるでしょうか?どのように知っていますか?あなたはコンピュータに何をすべきかを伝える必要があります。 – clcto

+0

あなたの例では、コンピュータに '' "+ letter"という式でそれを呼び出すことによって 'contains'に渡された値を再計算するように指示しています。 – clcto

0

差がString.contains(CharSequence引数である参照文字列に文字を変換するためにさまざまな方法の詳細については

while (i < this.word.length()) { 
    letter = this.word.charAt(i); 
    buildWord = "" + letter;   // <------------ 
    if (this.guessedLetters.contains(buildWord)) 

をs)メソッドは、パラメータとしてCharSequenceのみをとります。たCharSequenceはインターフェースであり、すべての既知の実装クラスは以下のとおりです。

CharBufferの、セグメント、文字列、StringBufferの、StringBuilderの

あなたがいずれか上記のクラスのパラメータとしてではなく、を渡すことができますcharです。その理由は、文字(char)をbuildWord(文字列)に変換しようとすると、をCharSeの実装クラスとして受け入れます息を飲む。さらに参照CharSequence java documentationため

String java documentation

関連する問題