繁体   English   中英

随机#猜谜游戏无限循环

[英]Random # Guessing Game Infinite Loop

对于我的 Java 课程,我应该制作一个随机数猜谜游戏。 我一直被困在过去几天创建的循环中。 程序的输出总是无限循环,我不明白为什么。 很感谢任何形式的帮助。

/*
  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?");
            }

    }
}

你把if检查输入是否等于 while 之外的数字,所以循环永远不会结束。

这是修复的代码:

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.");
            }
        }
    }
}

我修好了它! 我在每个失败条件后添加了中断,这样我就不会陷入无限循环。 我之前试过这个,但我一直收到错误。

这是完成的代码:

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.");
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM