2

私はまったく新しいJavaなので、これはばかげているように聞こえるかもしれません。

Java から GUI ベースのハングマン ゲームを作成しようとしています。配列からボタンのリストを作成しました。クリックすると、個々の文字が文字として返されます。推測する単語のリストがあり、ボタンが押されるたびに、単語と押された文字を比較し、一致する場合は置き換える必要があります。

私の友人は、配列を使用して文字を分割してチェックすることを提案しましたが、私はそれらのものに慣れていません。エラーのカウントだけでなく間違った入力も追跡する必要があるため、StringBuilder を使用するのが最善のアイデアかどうかはわかりません。StringBuilder が私にとって最良の選択肢である場合は、以下の問題を解決してください。

 String word = retWord; // The actual word  
 String s = "" + guessed; //Changing guessed letter to string 
 StringBuilder gletters = new StringBuilder(s);  
 String mainword = word.replaceAll("[^" + gletters + "]", "_"); //Replacing the matching letters  
 a.setText(mainword);

コードはFORボタンを押すループ内で実行されますが、出力は「apple」である必要があります。ボタンを押すたびに、出力は次のようになります。

Aを押したとき: A _ _ _ _
Pを押したとき: _ pp _ _
Lを押したとき: _ _ _ L _
Eを押したとき: _ _ _ _ E

私の質問は、現在の推測だけでなく、以前の正しい推測を記憶させるにはどうすればよいですか? また、間違ったボタンを押した場合のエラーをカウントするにはどうすればよいですか?

どんな助けでも大歓迎です。

4

4 に答える 4

1

あなたの問題はgletters、for ループで上書きし続けることです。これは、正規表現が新しく推測された文字を除くすべてを上書きし、以前の文字も上書きしないことを意味します。

コードの変更をできるだけ少なくするには (つまり を使用StringBuilder)、 for ループの外側で初期化するだけglettersです (少なくとも正しい単語のサイズの容量で)。次に、ループ内で追加します。

ここから分かるはずです。JavaDocs はあなたの友達です! http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

于 2013-09-20T17:07:56.847 に答える