2016-12-07 3 views
0

Я создал игру гадания в java. Это довольно просто: компьютер выбирает случайное число, пользователь выбирает, хотят ли они 5, 10 или 20 шансов догадаться об этом номере. После каждой догадки программа сообщит им, будет ли их догадка выше или ниже магического числа. Если они угадают номер, они получат поздравительное послание, и их спросят, хотят ли они снова играть. Если они не угадают номер, они также получают сообщение и спрашивают, хотят ли они снова играть. Одна вещь, которую я хотел бы добавить к своему коду, который я не могу понять ... Когда пользователь угадывает магическое число, я хотел бы сделать что-то подобное после поздравительного сообщения:Печать последовательных номеров в гадательной игре (java)?

Поздравляем, bob ! Вы догадались магического числа в 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); 
     } 
    } 

Кроме того, у вас есть ошибка: если вы ответите да в самом начале, все в порядке и вы играете в игру. Но если вы ответите «Да» (как предложено в вопросе) или какой-либо другой текст, он ждет другого ввода и когда вы что-то вводите и нажмите «Ввод», он продолжит игру. Итак, если вы введете «Нет», нажмите «Ввод», введите 1, нажмите «Ввод», он все равно будет воспроизводиться.

Смежные вопросы