2015-03-28 3 views
0

У меня есть начальная программа Java, над которой я работал, создает программу угадывания чисел, где компьютер угадывает число, которое пользователь думает в определенном диапазоне. У меня пока есть программа ниже, но вам нужна помощь, чтобы избавиться от нескольких перегибов/добавления функций. - Во-первых, мне нужно настроить его так, чтобы пользователь был запрошен и дал диапазон. Он должен запускать и производить что-то вроде этого: Добро пожаловать в эту первую в мире программу угадывания!Java Number Guessing Program Issue

Пожалуйста, выберите диапазон (выше, чем 1 и не больше, чем 50): 32

Вы выбираете число от 1 до 32 ... и я буду пытаться угадать его.

С каждой из моих предположений вы скажете мне, слишком ли высок (h или H), слишком низкий (l или L), матч (m или M) или вы хотите выйти (q или Q). Моя цель - найти номер, используя как можно меньше догадок.

Во-вторых, игра должна сдаваться и перезапускаться после провала пять, догадываться, но по какой-то причине после того, как она не работает в пятый раз, она снова предлагает пятое предположение, а затем перезапускается после этого. для предотвращения этого, чтобы он выглядел примерно так: Моя четвертая догадка 17: h Моя догадка слишком велика?

Мое пятое предположение - 16: h *** Мне не повезло в этом раунде. Я сдаюсь.

Давайте играть!

Моя первая догадка 10: и т.д ..

import java.util.*; 
import java.lang.Math; 

public class numguessprac1 { 

    // Declaring variables 
    public static String input; 
    public static int quit; 
    public static int guess; 
    public static int wins; 
    public static int guessNum; 
    public static int losses; 

    public static void main(String[] args) { 

     System.out.println("Welcome to my first-ever mind-reading  program!\n"); 
     System.out.println("You will choose a number between 1 and 32... and I will try to guess it."); 
     System.out.println(); 
     System.out.println("With each of my guess, you will tell me whether  I am too high (h or H),\n" + 
     "too low (l or L), match (m or M), or you want to quit (q or Q). My\n" + 
     "objective is to find the number using as few guesses as  possible."); 

     int totalGuessNum = 0; 

     while (quit != 1) { 
      System.out.println(); 
      gamePlay(numbersAsWords()); 
      totalGuessNum =+ guessNum; 
     } // Loop end 

     printStats(totalGuessNum); 

    } // Main end 

    public static int gamePlay(String numbersAsWords) { 

     int countdown; 
     Scanner s = new Scanner(System.in); 
     Random r = new Random(); 
     guess  = r.nextInt(2) + 16; 

     System.out.println("Let's play!"); 
     System.out.println(); 
     System.out.print("My " + numbersAsWords() + " guess is " + guess +  ": "); 
     String input = s.nextLine(); 

     for (countdown = 3; countdown >= -1; countdown--) { 

      if (countdown == -1 && !input.equals("M") && !input.equals("m"))  { 
       System.out.println("*** I am unlucky this round. I give  up."); 
       losses++; 
       break; 
      } else if 
      (input.equals("Q") || input.equals("q")) { 
       System.out.println("*** You quit!"); 
       quit = 1; 
       break; 
      } else if 
      (input.equals("M") || input.equals("m")) { 
       System.out.println("*** Correct!"); 
       guessNum++; 
       wins++; 
       break; 
      } else if 
      (input.equals("H") || input.equals("h")) { 
       System.out.println("My guess is too high?"); 
       guessNum++; 
       guess = guess - (int) Math.pow(2, countdown); 
       System.out.println(); 
       System.out.print("My " + numbersAsWords() + " guess is " +  guess + ": "); 
      } else if 
      (input.equals("L") || input.equals("l")) { 
       System.out.println("My guess is too low?"); 
       guessNum++; 
       guess = guess + (int) Math.pow(2, countdown); 
       System.out.print("\nMy " + numbersAsWords() + " guess is " +  guess + ": "); 
      } else if (!input.equals("M")) { 
       System.out.println("Sorry I do not understand your response.\n"); 
       System.out.print("My " + numbersAsWords() + " guess is " + guess + ": "); 
       countdown++; 
      } 

      input = s.nextLine(); 

     } // End for loop 

     return quit; 

    } // End of playGame 

    public static void printStats(int totalGuessNum) { 

     double ratio; 
     int totalGames = wins + losses; 

     System.out.println(); 
     System.out.println("My overall results:"); 
     System.out.println("Total games\t\t = " + totalGames); 
     System.out.println("Succeeded games\t\t = " + wins); 

     if (wins != 0) { 
      ratio = (double) totalGuessNum/(double) wins; 
      System.out.printf("Guesses/succ. game:\t = %1.1f\n", ratio); 
     } 
     else if (wins == 0) { 
      ratio = 0; 
      System.out.println("Guesses/succ. game:\t = " + ratio); 
     } 

     System.out.println("Gave-up games\t\t = " + losses); 

    } // End of smartGuessMeth 

    public static String numbersAsWords() { 

     String ordinalWord = "first"; 
     switch (guessNum) { 
      case 1: ordinalWord = "second"; break; 
      case 2: ordinalWord = "third"; break; 
      case 3: ordinalWord = "fourth"; break; 
      case 4: ordinalWord = "fifth"; break; 

     } 
     return ordinalWord; 

    } // 

} // End of class 
+0

Вы пытаетесь использовать технику грубой силы? : | – Abhishek

ответ

0

Вы не Обнуление счетчика guessNum

if (countdown == -1 && !input.equals("M") && !input.equals("m"))  { 
       System.out.println("*** I am unlucky this round. I give  up."); 
       losses++; 
       guessNum = 0; 
       break; 

будет делать трюк.