2017-09-02 2 views
1

さて、私は自分自身をハングマンのゲームにしています。それほど新しいJavaではなく、まだ学習しています。私は悩まされている問題を抱えていました。すべてのチャー(IndexBuilderで)をインデックスから別の文字列に置き換えます。

文字列の作成者(生成された単語と同じ文字数を持つ)内のすべての文字を索引に置き換える必要があります(ユーザーが文字を正しく推測した場合)。私はちょっと複雑ですが、ここにコードの一部があります。

StringBuilder wordTemplate = new StringBuilder(); 
for (int i = 0; i < theWord.length(); i++) { 
    wordTemplate.append('?'); 
} 

このコードが生成された単語と同じ文字量を持つ文字列を作成し、単語であった場合ので、「こんにちは」それが生成する「?????」あなたがそれぞれの文字を推測するとき、それは文字の腐食指数を置き換えるでしょう(例えば、私がOを推測した場合、それは "???? O"などを印刷します)。

しかし、文字が複数回その推測は1文字のみに影響し、その文字のみが効果的にゲームを中断し、他の発生は決して変更されないので、単語は決して完成しない。私はしばらくの間検索しており、を、単語の複数のインデックスから推測された文字がすべて置換されるようにするための解決策を見つけることができません。

それはここで私は現在、彼らのインデックスからの手紙を交換するために使用するコードがあります役立つだろう場合は、

if (theWord.contains(guess)) { 
    wordTemplate.deleteCharAt(theWord.indexOf(guess)); 
    wordTemplate.replace(theWord.indexOf(guess), theWord.indexOf(guess), guess); 
    System.out.println(wordTemplate); 
} 

以前にこれが唯一の各文字の1のために働く、と複数発生した場合には動作しません述べたように。事前:)

答えて

1

wordTemplate.deleteCharAt(theWord.indexOf(guess)); 
wordTemplate.replace(theWord.indexOf(guess), theWord.indexOf(guess), guess); 

はこれを試してみてください:

String guess = "l"; 
    int start = 0; 
    do { 
     int index = theWord.indexOf(guess, start); 
     if(index >= 0) { 
      wordTemplate.replace(index, index + 1, guess); 
      start = index + 1; 
     } else 
      break; 
    } while (true); 

    System.out.println(wordTemplate); 
0

に次のコード置き換えることができますありがとう:

wordTemplate = new StringBuilder(wordTemplate.toString().replace("?", guess)); 
関連する問題