Случайный # Угадайка Infinite Loop - PullRequest
0 голосов
/ 04 марта 2020

Для моего Java класса я должен сделать игру по угадыванию случайных чисел. Я застрял на все oop я создал в течение последних нескольких дней. Вывод программы всегда бесконечный l oop, и я не могу понять, почему. Любая помощь очень ценится.

/*
  This program will generate a random number. 
  It will ask the user to guess what number was generated and say
  if the guess is too high or low.

*/

import java.util.Scanner;

import java.util.Random;

public class RandomNumGame {
    public static void main(String[] args) {


        Random rand = new Random();
        Scanner input = new Scanner(System.in);
        int randNum = rand.nextInt(20);
        System.out.println("Number is : " + randNum);
        int userGuess = 0;
        int success = 0;
        System.out.println("Guess the number: ");
        userGuess = input.nextInt();

        while(success == 0)
        {

            if(userGuess > randNum){
                System.out.println("Too high");
            }
            else if(userGuess < randNum){
                System.out.println("Too high");  
            }
            else{
                System.out.println("Something is very wrong."); 
            }

        }
            if(userGuess == randNum){
                success++;
                System.out.println("You got it! Play again?");
            }

    }
}

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Я исправил это! Я добавлял разрывы после каждого условия сбоя, чтобы не получить бесконечное значение l oop. Я пробовал это раньше, но я продолжал получать ошибки.

Это полный код:

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

public class RandomNumGame {
    public static void main(String[] args) {
        Random rand = new Random();
        Scanner input = new Scanner(System.in);
        int randNum = rand.nextInt(20);
        System.out.println("Number is : " + randNum);
        int userGuess = 0;
        boolean success = false;

        System.out.println("Guess the number: ");
        userGuess = input.nextInt();
        input.close();

        while(success == false){
            if(userGuess > randNum) {
                System.out.println("Too high,try again");
                break;
            } else if(userGuess < randNum) {
                System.out.println("Too low");
                break;  
            } else if(userGuess == randNum) {
                success = true;
                System.out.println("You got it! Play again?");
            } else {
                System.out.println("Something is very wrong.");
            }
        }
    }
}
0 голосов
/ 04 марта 2020

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

Вот фиксированный код:

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

public class RandomNumGame {
    public static void main(String[] args) {
        Random rand = new Random();
        Scanner input = new Scanner(System.in);
        int randNum = rand.nextInt(20);
        System.out.println("Number is : " + randNum);
        int userGuess = 0;
        int success = 0;
        System.out.println("Guess the number: ");
        userGuess = input.nextInt();

        while(success == 0) {
            if(userGuess > randNum) {
                System.out.println("Too high");
            } else if(userGuess < randNum) {
                System.out.println("Too high");  
            } else if(userGuess == randNum) {
                success++;
                System.out.println("You got it! Play again?");
            } else {
                System.out.println("Something is very wrong.");
            }
        }
    }
}
...