Java猜谜游戏错误

Java猜谜游戏错误,java,exception,Java,Exception,提示如下: 创建一个名为BadGuessException的异常类 BadGuessException应该是Exception类的子类[1点] 创建2个构造函数[1点] BadGuessException类中的默认构造函数,它使用关键字super将消息“抱歉,这是一个无效的猜测!”传递给父构造函数。 BadGuessException类中的参数化构造函数,将使用关键字super将参数传递给父构造函数。 创建一个名为GuessingGame的类 生成一个介于1和10之间的随机数。 提示用户猜测数字

提示如下: 创建一个名为BadGuessException的异常类

BadGuessException应该是Exception类的子类[1点] 创建2个构造函数[1点] BadGuessException类中的默认构造函数,它使用关键字super将消息“抱歉,这是一个无效的猜测!”传递给父构造函数。 BadGuessException类中的参数化构造函数,将使用关键字super将参数传递给父构造函数。 创建一个名为GuessingGame的类

生成一个介于1和10之间的随机数。 提示用户猜测数字。允许用户无限制地正确猜测数字。[1分] 一旦用户猜对了数字,打印出“你猜对了!”并打印出用户猜对数字的次数。[1分] 使用try-catch块,将异常处理添加到代码中。 尝试使用正确的语法捕获块[1点] 如果用户输入的数字不在1和10之间,则引发BadGuessException。[1分] 添加另一个catch块,以捕获在用户为猜测的数字输入错误格式(如“5”或“5.0”)时引发的异常。这将防止程序崩溃或抛出运行时异常。捕获此异常时,程序不应崩溃,并应显示“对不起,您输入的数字格式无效”。[1分]


现在我已经运行了代码,但它在编译器中继续运行循环。

公共类猜测游戏{

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

public class GuessingGame {

    public static void main(String[]args) throws BadGuessException
    {
        int min = 1;
        int max = 10;
        Random rand = new Random();

        int numberToGuess = rand.nextInt((max - min) + 1) + min;    

        Scanner input = new Scanner(System.in);
        int guess;
        boolean win = false; 
        int numberOfTries = 0;

        while (!win) 
        {

            System.out.println("Guess a number between 1 and 10: ");
            try
            {
                guess = input.nextInt();
                numberOfTries++;

                win=true;

                if (guess == numberToGuess)
                {       
                    win = true;
                    System.out.println("YOU GOT IT!");
                    System.out.println("It took you " + numberOfTries + " tires.");

                }
                else
                {
                    throw new BadGuessException();
                }
            }
            catch(InputMismatchException e)
            {
                System.out.println("Please input a number betwee 1 and 10!");
            }
            catch(BadGuessException ex) {
                System.out.println("Sorry, you guessed the wrong number!");
            }
        }
    }
}
class BadGuessException extends Exception {

    private static final String message = "Sorry, that was an invalid guess!";

    public BadGuessException() {
        super(message);
    }
}
}
}

请尝试首先使用调试器,如果您可以更新您的帖子,更全面地描述问题发生的位置和方式,这会有所帮助。我在代码中遇到的错误是针对本节的:添加另一个catch块,以捕获在用户输入错误格式的猜测数字时引发的异常,例如“五”或“5.0”。这将防止程序崩溃或抛出运行时异常。当捕捉到此异常时,程序不应崩溃,并应显示“对不起,您输入了无效的数字格式”,并且每当我在运行代码时输入或输入无效响应时,它都会不断循环:猜测1到10之间的数字:请输入1到10之间的数字!我遇到的问题是,每当我输入一个无效的类型时,它就会给我这样一条消息:对不起,你输入了一个无效的数字格式!“相反,它不断循环此消息:猜测1到10之间的数字:请输入1到10之间的数字!我做了一些测试。尝试将
Guess=input.nextInt();
更改为
Guess=Integer.parseInt(input.next())
并捕获抛出的
数字格式异常
。它仍然不会重复;-;我的编码与你的略有不同,但我仍然得到了相同的结果我将编写代码非常感谢你,如果你不介意的话,它可以工作。你能告诉我你更改了什么以及我做错了什么,因为这对我了解未来的工作很有帮助。
private static Scanner input;

public static void main(String[] args) 
{
    Random rand = new Random();
    int numbertoguess = rand.nextInt(10);
    int numberoftries =0;
    input = new Scanner(System.in);
    int guess;
    boolean win = false;

    while(win == false)
    {
        System.out.println("Guess a number between 1 and 10");
        try
        {
        guess = Integer.parseInt(input.next());
        numberoftries++;

        if (guess == numbertoguess)
        {       
            win = true;
            System.out.println("That is correct !!");
            System.out.println("The number is : " + numbertoguess + " and it took you " + numberoftries + " tries");

        }
        else  
        {
            throw new BadGuessException();
        }
    }
    catch(NumberFormatException e)
    {
        System.out.println("Sorry, you entered an invalid number Format!");
    }
    catch(BadGuessException ex) 
    {
        System.out.println("Sorry, you guessed the wrong number!  ");
    }
}