1

コードはまだ完成していませんが、いくつか問題がありました。これは私の現在のコードです:

public class Engine
{
    public static void main(String[] args)
    {
        String word = JOptionPane.showInputDialog("Player 1! Please enter a word.");
        JOptionPane.showMessageDialog(null, "Switch to Player 2. It is time to play hangman!");
        char[] letters = word.toCharArray();
        String[] underscores = new String[word.length()];
        for(int i=0; i<=word.length()-1; i++)
        {
          underscores[i]="_ ";
        }
        StringBuilder builder = new StringBuilder();
        for (int i=0; i<word.length(); i++)
        {
            builder.append(underscores[i]);
        }
        int mistakes = 0;
        while(mistakes!=7)
        {
            String answer = JOptionPane.showInputDialog(null, "Please guess a letter.\n" + "Mistakes = " + mistakes + " of 7!\n\n" + builder.toString() + "\n\n");
            char guess = answer.charAt(0);
            for(int i=0; i<=word.length()-1; i++)
            {
                if(guess==letters[i])
                {
                    underscores[i] = answer;
                    for (int x=0; x<word.length(); x++)
                    {
                        builder.append(underscores[x]);
                    }
                }
            }
        }
    }
}

私が抱えている問題は、StringBuilder 部分と .append() にあります。

たとえば、単語が「帽子」の場合。次のように、3 つのアンダースコアが表示されたウィンドウが表示されます。


「h」を推測すると、次のように変わります。

_ _ _ h _ _

それ以外の

h _ _

さらに、次に「t」を当てると、次のようになります。

_ _ _ h _ _ h _ t

配列の変更された要素を既存の配列に追加します。append メソッドが原因であると確信していますが、代替手段についての知識はありません。

4

2 に答える 2

0

replace()のおよびdelete()メソッドを試すか、推測ごとStringBuilderに新しい を作成します。StringBuilder

于 2013-11-05T04:45:07.677 に答える