私のプログラムは現在、ランダムな単語を取り、単語に含まれる文字の数に基づいてダッシュに変わります。私は、推測された文字が言葉に含まれているかどうかを判断しますが、正しく推測された文字をどのように置き換えるかを判断することができませんでした。私はサイト上で可能な解決策を検討しましたが、私の現在のコードでは一つの作業をすることができませんでした。ダッシュを推測された文字に変更する
コード:
public String hiddenWord(){
word = randomWord.getRandomWord();
String dashes = word.replaceAll("[^ ]", " _ ");
return dashes;
}
public String guessNotification(){
if(word.indexOf(hv.keyChar)!=-1 && (hv.keyChar >= 'a' && hv.keyChar <= 'z')) {
letterGuessed = "There is a " + hv.keyChar + " in the word";
}
else if(word.indexOf(hv.keyChar)==-1 && (hv.keyChar >= 'a' && hv.keyChar <= 'z')) {
letterGuessed = "No " + hv.keyChar + " in the word";
guesses++;
System.out.println(guesses);
}
else{
letterGuessed = "Not a valid letter";
}
return letterGuessed;
}
public void newGame() {
hv.createNotification(this, size);
guesses = 0;
System.out.println(word);
}
}
あなたは変数で、これまで推測単語を保存する必要があります見て 'guessedWord'を言うかもしれない方法です。 Javaの 'String'は不変なので(変更できません)、' String'を使うことはできません。 'StringBuffer'または' char'配列を使うことができます。 'word.indexOf(hv.keyChar)'は、ユーザが推測した単語の文字のインデックスを返します。このインデックスを使用して、 'guessedWord'に適切な文字を設定します。たとえば、 'dashes'をStringBufferとして定義した場合、' guessedWord.setCharAt(word.indexOf(hv.keyChar)、hv.keyChar) 'を使うことができます。 –
ユーザが正しく推測した文字のすべてのインスタンスを置き換えたい場合は、-1を返すまで、すべてのインデックスを取得するために 'word.indexOf'を繰り返し呼び出す必要があります。 –
@DavidChowellerあなたが正しくあなたを理解しているかどうかわからないので、あなたの提案に基づいて行った変更を反映するために上記のコードを編集しました。私は推測された手紙とどうするかについて混乱している。 –