gpt4 book ai didi

Java试图捕获非整数用户输入并使其循环

转载 作者:行者123 更新时间:2023-11-29 04:55:03 24 4
gpt4 key购买 nike

我正在做作业,paycode 是让用户输入的变量之一。所以我将这个 paycode 声明为 int。那么,如果用户输入的不是整数,例如 a、b、c、d 或 1.5、2.5 等等,那又会怎样呢?我尝试了 if else 函数,但是当用户输入的不是整数时,它就会出错。当用户输入整数以外的支付码并让用户再次输入时,我也想让它循环。这就是我现在所拥有的,我无法让它循环。相反,它会变成无限循环。

int paycode;
boolean good = true;

do {
try {
System.out.printf("Key in the paycode of the worker according to the worker type: \n");
paycode = myscanner.nextInt();

if (paycode == 4 || paycode == 3 || paycode == 2 || paycode == 1) {
good = false;
}
else {
//user key in out of the range of pay code
System.out.printf("Paycode must be 1,2,3,4 \n");
}
}
catch(InputMismatchException e) {
System.out.printf("Paycode cannot have decimal places. \n");
System.out.printf("Key in the paycode of the worker according to the worker type: \n");
}
}
while (good);

最佳答案

myscanner尝试获取下一个 int但是输入无效,当抛出异常时,它将无效输入留在缓冲区中。您需要添加 myscanner.next();catch block 以便刷新无效输入。所以,catch block 将如下所示:

...
catch (InputMismatchException e) {
System.out.printf("Paycode cannot have decimal places. \n");
myscanner.next();
}
...

请注意,您不需要打印 System.out.printf("Key in the paycode of the worker according to the worker type: \n");catch阻塞,因为这会使它在输入无效时打印两次。

顺便说一句,循环的语义有点困惑。我会设置 boolean good = false;首先,然后将 while 条件设置为 while (!good); .您还需要更改 good = true;如果输入无效。这使得更容易理解程序循环的原因(而输入不好)。只是一个让您的代码更具可读性的小建议。

关于Java试图捕获非整数用户输入并使其循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com