JavaFX正在工作,但try-catch-finally代码不是';T

JavaFX正在工作,但try-catch-finally代码不是';T,java,exception,javafx,Java,Exception,Javafx,我刚刚开始了关于异常处理的课程,我不确定我在代码中做错了什么——我的目标是创建一个用户界面,询问用户拥有多少宠物,并检查输入是否为整数。有人能指出哪里出了问题吗 我已经尝试在邮件中使用label.setText(),并且还更改了使用的异常(我尝试了NumberFormat) 这是我使用的块(这是我第一次遇到呃,所以我觉得这个话题有点混乱) 我想包括的例外情况是,如果用户输入了另一个数字类型而不是整数,以及如果用户输入的是负整数而不是正整数或0。我的代码运行,但try-catch块实际上不起作用。

我刚刚开始了关于异常处理的课程,我不确定我在代码中做错了什么——我的目标是创建一个用户界面,询问用户拥有多少宠物,并检查输入是否为整数。有人能指出哪里出了问题吗

我已经尝试在邮件中使用label.setText(),并且还更改了使用的异常(我尝试了NumberFormat)

这是我使用的块(这是我第一次遇到呃,所以我觉得这个话题有点混乱)


我想包括的例外情况是,如果用户输入了另一个数字类型而不是整数,以及如果用户输入的是负整数而不是正整数或0。我的代码运行,但try-catch块实际上不起作用。

这段代码中似乎有很多缺陷!首先,您不应该将输入作为字符串,如果您将输入作为整数,您可能会引发InputMismatchException,通过该异常,您可以轻松地告诉用户说“仅输入整数值”,如果将输入作为字符串,您将无法做到这一点。 不要使用finally块,因为无论代码抛出多少异常,finally块都会被执行。即使您最后输入了-1(在执行代码时),它也会显示“youhave-1pets:”消息,因为不管发生什么情况,finally块都会被执行! 我重构了代码,使其以同样的方式工作

Scanner input = new Scanner(System.in);

        boolean exceptionHit = false;

        int value = 0;

        try {
            value = input.nextInt();
            if (value <= 0) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException e) {
            String outputMessage = "The number must be an integer no less than 0!";
            label1.setText(outputMessage);
            exceptionHit = true;

        } catch (InputMismatchException i) {
            System.out.println("Please enter an integer.");
            exceptionHit = true;
        }
        if (exceptionHit == false)
        System.out.println("You have " + value + " pets");
扫描仪输入=新扫描仪(System.in);
布尔异常命中=假;
int值=0;
试一试{
value=input.nextInt();

如果(value
但是try-catch块实际上不起作用
你能详细说明一下吗?你期望谁以及会发生什么?而且没有理由在你的代码中抛出异常,你只需在
中执行代码,否则
你在try块之前就已经将字符串输入转换成整数了,所以除了int以外的任何东西都会被删除。)已经抛出了NumberFormatException。您的代码只适用于负整数,不适用于非整数。您好!我为javafx窗口编写了此代码,所以我的意思是,当我单击submit按钮检查用户输入是否有效时,它没有显示/显示消息。我的aim在这里是要使用expections来检查输入,所以我不能真正使用if-else。虽然这只对Java有用,但问题是询问JavaFx,并且遗漏了一些细节,例如OP最有可能使用
文本字段
来获得输入。
Scanner input = new Scanner(System.in);

        boolean exceptionHit = false;

        int value = 0;

        try {
            value = input.nextInt();
            if (value <= 0) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException e) {
            String outputMessage = "The number must be an integer no less than 0!";
            label1.setText(outputMessage);
            exceptionHit = true;

        } catch (InputMismatchException i) {
            System.out.println("Please enter an integer.");
            exceptionHit = true;
        }
        if (exceptionHit == false)
        System.out.println("You have " + value + " pets");