gpt4 book ai didi

java - 如何防止抛出异常时用户输入被结转?

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:32 26 4
gpt4 key购买 nike

我不知道是否是 sleep 不足,但我就是不明白为什么会发生这种情况。

我的代码要求用户提供 int 值。如果用户输入一些愚蠢的内容,例如“二十七”而不是任何数字,则会抛出 InputMismatchException 异常。这一切都很好。

由于某种原因,用户输入值被传递到我的代码中,然后一切都变得困惑......

case 'r':
System.out.print("What height to reap at : ");
try {
reapAt = keyboard.nextInt();
canadaforestservice.reapTrees(initTreeHeight, initTreeGrowPerYear, reapAt);
} catch (InputMismatchException e) {
System.out.println("ERROR: Invalid height");
}
System.out.println();
System.out.print("(D)isplay, (N)ew, (Y)ear, (R)eap, (S)ave, (L)oad, e(X)it : ");
menuItems = keyboard.next().charAt(0);
break;

预期结果:

(D)显示、(N)ew、(Y)耳朵、(R)eap、(S)ave、(L)负载、e(X)it:r

收获高度:二十七

错误:高度无效

(D)显示,(N)ew,(Y)耳朵,(R)eap,(S)ave,(L)负载,e(X)it:

<小时/>

我的结果:

(D)显示、(N)ew、(Y)耳朵、(R)eap、(S)ave、(L)负载、e(X)it:r

收获高度:二十七

错误:高度无效

(D)isplay、(N)ew、(Y)ear、(R)eap、(S)ave、(L)oad、e(X)it:错误:选项无效,请重试 “字母 T 从之前的用户输入中继承”

(D)显示、(N)ew、(Y)耳朵、(R)eap、(S)ave、(L)oad、e(X)it:

最佳答案

catch (InputMismatchException e)内添加以下行:keyboard.nextLine();以便完成读取该行:

         // ...
} catch (InputMismatchException e) {
System.out.println("ERROR: Invalid height");
keyboard.nextLine();
}
// ...

您可能想了解 Scanner#nextInt() 之间的区别其中

Scans the next token of the input as an int

Scanner#nextLine()其中

Advances this scanner past the current line and returns the input that was skipped

关于java - 如何防止抛出异常时用户输入被结转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806488/

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