Java 当抛出异常时,如何防止用户输入被带入?
我不知道是不是睡眠不足,但我就是不明白为什么会发生这种情况 我的代码要求用户提供Java 当抛出异常时,如何防止用户输入被带入?,java,object,exception,methods,Java,Object,Exception,Methods,我不知道是不是睡眠不足,但我就是不明白为什么会发生这种情况 我的代码要求用户提供int值。如果用户键入一些愚蠢的东西,比如“二十七”而不是任何数字,它将抛出inputmaschException异常。这一切都很好 由于某种原因,用户输入值会被带入我的代码中,之后会把一切都搞砸 case 'r': System.out.print("What height to reap at : "); try { reapAt = keyboard.ne
int
值。如果用户键入一些愚蠢的东西,比如“二十七”而不是任何数字,它将抛出inputmaschException
异常。这一切都很好
由于某种原因,用户输入值会被带入我的代码中,之后会把一切都搞砸
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) isplay,(N)ew,(Y)ear,(R)eap,(S)ave,(L)oad,e(X)it:R
在什么高度收割:二十七
错误:高度无效
(D) isplay,(北)东,(Y)耳,(R)eap,(S)ave,(L)oad,e(X)it:
我的结果是: (D) isplay,(N)ew,(Y)ear,(R)eap,(S)ave,(L)oad,e(X)it:R 在什么高度收割:二十七 错误:高度无效 (D)显示,(N)ew,(Y)ear,(R)eap,(S)ave,(L)oad,e(X)it:ERROR:选项无效,请重试“字母T从以前的用户输入中结转” (D) isplay,(N)ew,(Y)ear,(R)eap,(S)ave,(L)oad,e(X)it:内部
捕获(输入不匹配异常e)
添加以下行:键盘.nextLine()代码>为了完成该行的读取:
// ...
} catch (InputMismatchException e) {
System.out.println("ERROR: Invalid height");
keyboard.nextLine();
}
// ...
您可能想了解其中的区别
将输入的下一个标记扫描为整数
哪一个
将此扫描仪向前移动超过当前行,并返回所需的输入
被跳过
在catch(InputMismatchException e)内部添加以下行:keyboard.nextLine()代码>为了完成该行的读取:
// ...
} catch (InputMismatchException e) {
System.out.println("ERROR: Invalid height");
keyboard.nextLine();
}
// ...
您可能想了解其中的区别
将输入的下一个标记扫描为整数
哪一个
将此扫描仪向前移动超过当前行,并返回所需的输入
被跳过