Java 随机猜测游戏无限循环

Java 随机猜测游戏无限循环,java,loops,infinite,Java,Loops,Infinite,对于我的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.Sca

对于我的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?");
            }

    }
}
/*
这个程序将生成一个随机数。
它将要求用户猜测生成的数字并说出
如果猜测过高或过低。
*/
导入java.util.Scanner;
导入java.util.Random;
公共类随机numgame{
公共静态void main(字符串[]args){
Random rand=新的Random();
扫描仪输入=新扫描仪(System.in);
int randNum=rand.nextInt(20);
System.out.println(“编号为:“+randNum”);
int userGuess=0;
int成功=0;
System.out.println(“猜数字:”);
userGuess=input.nextInt();
while(成功==0)
{
if(userGuess>randNum){
System.out.println(“过高”);
}
else if(userGuess
您将检查输入是否等于while之外的数字的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;
导入java.util.Random;
公共类随机numgame{
公共静态void main(字符串[]args){
Random rand=新的Random();
扫描仪输入=新扫描仪(System.in);
int randNum=rand.nextInt(20);
System.out.println(“编号为:“+randNum”);
int userGuess=0;
int成功=0;
System.out.println(“猜数字:”);
userGuess=input.nextInt();
while(成功==0){
if(userGuess>randNum){
System.out.println(“过高”);
}else if(userGuess
我修好了!我在每个失败条件之后添加了中断,这样我就不会得到一个无限循环。我早些时候试过,但一直出错

这是完整的代码:

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.");
            }
        }
    }
}
import java.util.Scanner;
导入java.util.Random;
公共类随机numgame{
公共静态void main(字符串[]args){
Random rand=新的Random();
扫描仪输入=新扫描仪(System.in);
int randNum=rand.nextInt(20);
System.out.println(“编号为:“+randNum”);
int userGuess=0;
布尔成功=假;
System.out.println(“猜数字:”);
userGuess=input.nextInt();
input.close();
while(success==false){
if(userGuess>randNum){
System.out.println(“太高,请重试”);
打破
}else if(userGuess
在第一次评估后,您永远不会更新
userGuess
。而
success
在循环中不会发生变化,因此一旦代码进入,它就永远无法退出,因为循环条件永远不会变为
false
。您的解决方案使成功条件起作用,但过高和过低的选项仍然会导致无限循环。谢谢你的帮助!