当前位置: 首页 > 知识库问答 >
问题:

我的while循环旨在捕获一个异常并请求一个新的输入,它在无限重复,我不知道为什么[duplicate]

姬锐
2023-03-14

我是一个非常初级的程序员,在我大学的第一年。目前,我正在尝试编写一些Java代码,让用户使用扫描仪插入一个pin号码,如果提供的pin不是int,则要求新的输入。以下是我写的:

System.out.println("Please enter your pin. Please note that only numbers are allowed for this selection.");
    boolean valid = false;
    while(!valid)
    {
        try
        {
            pin = parser.nextInt();
            valid = true;
        }
        catch (InputMismatchException error)
        {
            System.out.println("Please use only numbers in your pin.");
        }
    }

这段代码要求输入一个pin,将布尔变量设置为false,并进入一个while循环。扫描仪对象向系统请求输入。在中,如果响应不是int,则输入catch语句,并在其中打印错误消息。如果响应是int,那么一切正常,int被分配到pin字段,我们继续。然而,问题是,当输入catch语句时,它会无限重复。我使用这段代码的目的是执行catch语句,代码将运行回while循环的顶部,我将能够再次使用try块,提供一个新的要检查的输入。然而,代码似乎跳过了这个新的输入步骤,只是直接进入后续循环的catch块。有没有办法解决这个问题?

共有1个答案

段干茂实
2023-03-14

因此,当输入非整数时,代码立即跳转到异常块,因为解析器。nextInt()引发异常。此异常会导致执行跳过valid=true的赋值,直接跳转到catch块。因此,while循环继续进行,因为!valid仍然为真。

也许可以添加系统。在异常块中退出()。

最好是得到下一个字符,测试它是否有效。如果有效,则退出循环;如果无效,则显示消息。同时给他们一个角色,让他们停止尝试。这样,如果他们输入pin或“退出”字符,您将停止。

发布您的下一次尝试。

 类似资料: