2016-12-07 16 views
0

私はJavaで推測ゲームを作成しました。それはかなりシンプルです:コンピュータは乱数を選択し、ユーザーは5,10、または20のチャンスでその数を推測するかどうかを選択します。それぞれの推測の後、プログラムは彼らの推測が魔法の数よりも高いか低いかを彼らに伝えます。彼らが数字を推測すると、彼らはお祝いのメッセージを受け取り、彼らは再びプレイしたいかどうか尋ねられます。彼らが数字を推測しない場合、彼らはまたメッセージを受け取り、彼らが再びプレイしたいかどうか尋ねられます。私のコードに追加したいと思っているようなものはありません。 ユーザーがマジックナンバーを推測すると、おめでとうメッセージの後にこのようなことをします:推測ゲームで連続した数字を印刷する(java)?

おめでとう、ボブ!あなたは6つの推測で魔法の数を推測しました。 、

私はこれを試してみました、私はすぐにどんな意味がありませんでした実現:

あなたはこれらの推測を​​使用していませんでしたしかし、ここから私は立ち往生しています。

System.out.println("You did not use these guesses: "+ (i-numberOfGuesses)); 

これを含めてどうすればよいですか?私は配列を使用したくないです。

import java.util.Random; 
import java.util.Scanner; 

public class NewClass 
{ 
    public static void main(String [] args) 
    { 
    final String SENTINEL = "no"; 
    int guess; 
    String playAgain; 
    int numberOfGuesses; 

     Scanner scan = new Scanner(System.in); 


     System.out.print(" Enter your name: "); 
     String name = scan.next(); 


     System.out.print(" Would you like to try to guess a number? (Yes or No):"); 
     String answer = scan.next(); 

     while(!answer.equals(SENTINEL)){ 

     if (answer.equals("yes")) 
     System.out.print("How many guesses would you like? (5, 10, 20): "); 
      do { 
      numberOfGuesses = scan.nextInt(); 

      if (numberOfGuesses == 5 || numberOfGuesses == 10 || numberOfGuesses == 20) 
       break; 
      System.out.print("How many guesses would you like? (5,10,20): "); 
      } while (true); 

      Random random = new Random(); 

      int randomNumber = random.nextInt(100) + 1; 


      { 
      for(int i = 1; i <= numberOfGuesses ; i++){ 
    System.out.print("Enter guess #"+i+": "); 
    guess = scan.nextInt(); 

    if (guess > randomNumber && guess <= 100) 
     System.out.println("Your guess, "+guess+", is greater than the magic number."); 

    else if (guess < randomNumber && guess > 0) 
     System.out.println("Your guess, "+guess+", is less than the magic number."); 

    else if (guess == randomNumber){ 
     System.out.println("Congratulations, "+name+"! You guessed the magic " 
       + "number in "+i+" guesses."); 
     System.out.println("You did not use these guesses: "+ (i-numberOfGuesses)); 
     break; 
} 
    else 
     i--; 

    if (i == numberOfGuesses) 
     System.out.println("Sorry, " + name+", you did not guess the magic " 
       + "number, " + randomNumber + ", in "+ numberOfGuesses + " tries."); 

      } 

     System.out.print("Would you like to try to guess a number? (Yes or No):"); 
    answer = scan.next(); 
} 

      }}} 

答えて

0

私はあなたの提案を交換する必要があることだと思う(しかし、間違った)このループを使用してコードの行:

if (i != numberOfGuesses) { 
     System.out.println("You did not use these guesses: "); 
     for (int j = i + 1; j <= numberOfGuesses; j++) { 
     System.out.println(j); 
     } 
    } 

はまた、あなたがバグを持っている:あなたが最初にyesと答えた場合、すべての罰金をあなたはゲームをプレイします。しかし、Yes(質問の中で提案されているような)やその他のテキストに答えると、別の入力を待っていて、何かを入力してEnterを押すと、ゲームは続行されます。したがって、「いいえ」と入力してEnterキーを押し、1を入力してEnterキーを押しても再生されます。

関連する問題