2013-11-13 3 views
0

Я пытаюсь создать программу, которая принимает ввод минимального и максимального числа, а затем генерирует случайное число в этом диапазоне. Затем пользователь угадывает число, и если он слишком высок, он выводит messege. Если он слишком низок, он выводит сообщение. Часть, за которой я застрял, - это когда вы правильно угадываете номер, пользователь вводит «Y» или «N», чтобы снова запустить программу.Else-If/While Loop stuck

Мой код выглядит следующим образом:

import java.util.Scanner; 
import java.util.Random; 
public class GuessingGame_V2 
{ 
public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 
    System.out.print('\u000C'); 
     int min; 
     int max; 
     int userGuess; 
     int numberGuesses = 1; 
     System.out.println("Enter the minimum number: "); 
     min = in.nextInt(); 
     System.out.println("Enter the maximum number: "); 
     max = in.nextInt(); 
     Random r = new Random(); 
     int randomNumber = r.nextInt(max - min + 1) + min; 
     System.out.println("Enter your guess: "); 
     userGuess = in.nextInt(); 
    String guessAgain = ("Y"); 
while(!guessAgain.equalsIgnoreCase("N")) 
{   
    if(userGuess > randomNumber){ 
     System.out.println("Your guess was to high! Guess again!"); 
     System.out.println("Input your new guess: "); 
     userGuess = in.nextInt(); 
     numberGuesses++; 
     } 
    else if (userGuess < randomNumber){ 
     System.out.println("Your guess was to low! Guess again!"); 
     System.out.println("Input your new guess: "); 
     userGuess = in.nextInt(); 
     numberGuesses++; 
     } 
    else 
     { 
     System.out.println("Congratulations, you guessed the number!"); 
     System.out.println("It took " + numberGuesses + " tries"); 
     System.out.println("Guess another number? (Y/N)"); 
     guessAgain = in.next(); 
     } 
    } 
    System.out.println("Thank's for playing!"); 
    } 
} 

Проблема возникает, когда пользователь нажимает кнопку «Y», чтобы перезапустить программу. Он не перезапускается и снова отображает окончательное сообщение. (заявление печати, количество догадок и Y/N). Мне нужна программа для перезапуска, когда пользователь «Y»

Я новичок размещения на сайте .. так что простите меня, если я испортил положить в коде - Заранее спасибо за помощь -

* Изменения - 11/13/13 10:58 Изменен код для ввода более одного ввода и продолжают принимать ввод, пока пользователь не поправит его.

+1

Этот код не позволяет угадывать один раз перед началом новой игры? Если это так, то проблема должна быть исправлена ​​в первую очередь. – OGHaza

+0

Да, вы правы, я действительно играл с кодом немного, прежде чем я разместил его здесь. У меня было так, чтобы вы могли догадываться не один раз, и я изменил его. Спасибо, что привлекли его к моему вниманию! – cdeforest2014

ответ

0

Вам нужны вложенные циклы, потому что вы делаете два повторяющихся действия - сначала повторяете игру, а во-вторых, запрашиваете угадывание в одной игре.

Так что используйте вложенные петли. Один цикл подсказывает пользователю, хочет ли он или она играть и снова запрашивает пользователя с тем же вопросом в конце. Вложенная петля должна быть такой, как у вас есть.

Ваш код должен быть вдоль линий

while (stillPlaying) { 
    while (stillGuessing) { 
    } 
} 

Надежда, что помогает.

+0

Опять же, я относительно новичок в этом .. Куда это пойдет? Будет ли это вместо моего «while (! GuessAgain.equalsIgnoreCase (« N »))? Также мне нужно определить stillGuessing и stillPlaying? Также обратите внимание, что я отредактировал код - – cdeforest2014

+0

Вам необязательно нужны переменные 'boolean', но вам нужны условия, которые задаются на основе ответов пользователя. Таким образом, у вас будет условие, которое оценивается как «false», когда пользователь угадывает правильное число во внутреннем цикле. И условие, которое оценивает «false», когда пользователь указывает «N», которое он/она больше не хочет играть во внешнем цикле. Самый простой способ начать это - просто реализовать внутренний цикл в первую очередь - игру, которую играют правильно один раз. – Vidya