2016-05-16 19 views
0

私のハングマンゲームの中で推測方法に取り組んでいます。それは、ユーザーが単語内の各文字で推測して確認したいという手紙を取ります。代わりにそれのように別々のラインで、ArrayListを複数回印刷する

Have another user enter a word to play with: 

Apple 
Welcome to hang man! Below is your word: 

_ _ _ _ _ Enter a letter to guess 
p 

_pp__ 

Enter a letter to guess 

    l 

    ___l_ 

Enter a letter to guess 

が、それは「P」と一緒に「L」を印刷してそれを作るためにとにかくあります:現在のコードは私の入力を取得することを

public void checkGuess(String guessLetter) 
{ 
    for(int i = 0; i < gameWord.length(); i++) 
    { 
     if(guessLetter.charAt(0) == (gameWord.charAt(i))) 
     { 
      hideword[i] = guessLetter.charAt(0); 

     } 
     else 
     { 
      hideword[i] = '_'; 
     } 
    } 
    System.out.println(hideword); 
} 

ありますか?

答えて

0

取り除く:あなたのループから

else 
{ 
    hideword[i] = '_'; 
} 

。それ以外の場合は、前の進行状況が上書きされます。 hidewordは、ゲーム開始時に'_'と入力し、ゲームの進行に合わせて変更する必要があります。 Arrays.fill(char[], char)を使用して、このような

何か、:

public Game(String word) { 
    gameWord = word; 
    hideword = new char[word.length()]; 
    Arrays.fill(hideword, '_'); // import java.util.Arrays; 
} 

public void checkGuess(String guessLetter) { 
    for(int i = 0; i < gameWord.length(); i++) 
     if(guessLetter.charAt(0) == (gameWord.charAt(i))) 
      hideword[i] = guessLetter.charAt(0); 
    System.out.println(hideword); 
} 
+0

'hideword'を初期化するときに' Arrays.fill() 'を使う方法を示すために私の答えを更新しました。 – 4castle

0

あなただけ _の配列によってhidewordを仮調印することにより、このようにそれを行うことができます(配列の長さはgameWord内の文字の合計がないです)とあなたがいること、それを削除しますので、もし、あなたのコード内で何が起こっているあなたのコード

public void checkGuess(String guessLetter) { 
    for(int i = 0; i < gameWord.length(); i++) { 
     if(guessLetter.charAt(0) == (gameWord.charAt(i))) { 
      hideword[i] = guessLetter.charAt(0); 
     } 
    } 
    System.out.println(hideword); 
} 

から他の一部を除去し、あなたのすべての試合はあなたのコードの他の部分にあなたの最初の最後の試合の結果をオーバーライドしています私たちはすでにhidewordを_ _ _によって初期化しているのでうまくいきます。

+0

どうすれば初期化できますか?それ以来、私は実際に "_"を追加することはできません文字配列 – Ian

+0

4castleは方法を述べています。ありがとう4castle。 – proudandhonour

関連する問題