2017-11-08 7 views
0

私はユーザーが色を推測するハングマンゲームを作っています。私がしたいのは、ユーザーが5つ以上のヒントを間違って取得した場合(5つのヒントすべてを通過した場合)、ユーザーが失ったと表示されます。 whileループが終了すると(単語が正しいか、5つのヒントをすべて経ています)、勝ったかどうかを知らせます。 これが行うコードの一部である:whileループ印刷時に永久に繰り返すステートメント

public static void main(String[] args){ 
    Scanner in = new Scanner(System.in); 
    String color = getColor(); 
    String result = EmptyStr(color); 
    String[] hints = getHints(color); 
    System.out.println("Please enter a letter:"); 
    char letter = in.next().charAt(0); 
//----------------------------------------------------------- 
    int wrong = 0; 
    while (wrong<6){ 
    if (checkLetter(color, letter)){ 
     // result was previously defined elsewhere so don't worry about it 
     result = Result(color, result, letter); 
     System.out.println("Correct guess! here is your word so far: " + result); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
     if (result.equals(color)){ 
     System.out.println("congratulations! You Won!"); 
     break; 
     } 
    } 
    else{ 
     wrong ++; 
     System.out.println(hints[0]); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
    } 
    } 
    // also not sure what to put here after player wins or loses: System.out.println("Sorry! You lost! The correct word was: " + color); 

} result = Result(color, result, letter); System.out.println("Correct guess! here is your word so far: " + result); System.out.println("Lifelines left: " + (5 - wrong)); 繰り返し永遠

しかし、I入力1文字と、それが正しいですか、。私は知りたい:なぜそれは永遠に繰り返すのだろうか?また、どのように動作させるために修正することができますか?

+0

'checkLetter'が' true'を返すと仮定すると、 'result'が' color'と等しい場合にのみ 'break'します - もしループしなければ –

+0

@ScaryWombatしかし、私はもう一つの文字を再入力してそれが文字の色 –

+0

その場合、**あなたのロジックを並べ替える必要があります。多分あなたは 'char letter = in.next()。charAt(0);'をループに入れたいかもしれません。 –

答えて

0

私自身の問題が見つかりました!それは繰り返すと私は手紙を再入力することができるようにするために

事が char letter = in.next().charAt(0);whileループ内でなければならない、ためには、あります。それは全体の問題を修正しました!

-1

私は問題があると思います。ユーザーが推測の権利を取得したときに反復する必要はありません。間違っている場合に限ります。最初のifに別の "wrong ++"を必ず追加してください。それは問題を解決するかもしれない。

if (checkLetter(color, letter)){ 
     // result was previously defined elsewhere so don't worry about it 
     result = Result(color, result, letter); 
     System.out.println("Correct guess! here is your word so far: " + result); 
     System.out.println("Lifelines left: " + (5 - wrong)); 
     wrong ++; 
関連する問題