2015-11-12 3 views
1

Я пишу простую игру угадывания java, игра должна случайным образом выбирать число от 1 до 100, а затем после того, как вы выберете правильный номер, он спросит вас, хотите ли вы снова сыграть. Я знаю, что должен использовать цикл Do while, чтобы спросить, хочет ли пользователь играть снова, но каждый раз, когда я пытаюсь, я не могу заставить его работать. Это моя полностью функциональная программа без цикла while. Если кто-то может помочь мне вызвать пользователя, если они захотят снова сыграть, я был бы очень благодарен. Я все еще очень новичок в программировании. Также приносим извинения, если отступы не на 100% правильны.Делать в то время как петля для угадывания игры

import java.util.Scanner; 
import java.util.Random; 
public class GuessingGame 
{ 
    public static void main (String [] args) 
    { 


    //Variables 
    Random randomNumber = new Random(); 
    Scanner kbd = new Scanner(System.in); 
    int computerValue = randomNumber.nextInt(100); 
    int numberOfTries = 0; 
    int success = 0; 
    int guess = 0; 


    //Logic and While Loop 



    while (success ==0) 
    { 
     System.out.println("please enter an integer betwen 1 and 100 inclusive: "); 
     guess = kbd.nextInt(); 
     numberOfTries++; 

      if (guess < 1 || guess > 100){ 
       System.out.println("Invalid input"); 
      } 

      else if (guess == computerValue){ 
       success++; 
       System.out.println("Congratulations you won! Your numbers of tries was: " + numberOfTries + " and the number was: " + computerValue); 

      } 
      else if (guess < computerValue){ 
       System.out.println("Your guess is too low!"); 
      } 
      else if (guess > computerValue){ 
       System.out.println("Your guess is too high!"); 
    } 
    } 



    } 
} 
+5

Вы уже сделали цикл while, предлагая пользователю непрерывно вводить цифры, пока не получите правильный номер. Внедрите этот цикл очень похожим образом. – JackVanier

+0

После того, как они выиграют, спросите, хотите ли они снова играть. Если они войдут в «y» или «yes», то уменьшите «успех» до 0. EDIT: Woops, похоже, что Джеймс избил меня. –

ответ

1

Попробуйте это:

while(true) { 
    computerValue = randomNumber.nextInt(100); 
    numberOfTries = 0; 
    while (true) { 
     System.out.println("please enter an integer betwen 1 and 100 inclusive: "); 
     guess = kbd.nextInt(); 
     numberOfTries++; 

     if (guess < 1 || guess > 100) System.out.println("Invalid input"); 
     else if (guess == computerValue) { 
      System.out.println("Congratulations you won! Your numbers of tries was: " + numberOfTries + " and the number was: " + computerValue); 
      // leave the first loop 
      break; 
     } 
     else if (guess < computerValue) System.out.println("Your guess is too low!"); 
     else if (guess > computerValue) System.out.println("Your guess is too high!"); 
    } 

    System.out.println("Do you want to play again? (1:Yes/2:No)"); 
    // if input is not yes leave second loop 
    if(kbd.nextInt() != 1) break; 
} 
+0

Я пошел вперед и попробовал ваше решение, и это сработало как шарм, я никогда не думал о том, чтобы оставить первый цикл, а затем перешел во второй. Спасибо! – decken

+0

Рад, что это сработало :) – Pol

0

Подскажите пользователю, если он хочет, чтобы снова играть в

else if (guess == computerValue) { 
    success++; 
    System.out.println("Congratulations you won! Your numbers of tries was: " + numberOfTries + " and the number was: " + computerValue); 
} 

Если пользователь вводит да success--;

0

Если вы хотите использовать do while loop это сработает.

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

public class GuessingGame { 

public static void main(String[] args) { 
    //Variables 
    Random randomNumber = new Random(); 
    Scanner kbd = new Scanner(System.in); 
    int computerValue; 
    int numberOfTries = 0; 
    int success = 0; 
    int guess; 
    boolean playAgain; 
    //Logic and While Loop 
    do { 
     computerValue = randomNumber.nextInt(100); 
     guess = 0; 
     playAgain = false; 
     while (guess != computerValue) { 
      System.out.println("Please enter an integer betwen 1 and 100 inclusive: "); 
      guess = kbd.nextInt(); 
      numberOfTries++; 
      if (guess < 1 || guess > 100) { 
       System.out.println("Invalid input"); 
      } else if (guess < computerValue) { 
       System.out.println("Your guess is too low!"); 
      } else if (guess > computerValue) { 
       System.out.println("Your guess is too high!"); 
      } 
     } 
     success++; 
     System.out.println("Congratulations you won! Your numbers of tries was: " + numberOfTries + " and the number was: " + computerValue); 
     System.out.println("Would you like to play again?"); 
     switch (kbd.next()) { 
      case "yes": 
       playAgain = true; 
       break; 
      default: 
       break; 
     } 
    } while (playAgain); 
    System.out.println("Goodbye"); 
} 
} 
Смежные вопросы