do{
try{
System.out.println("Enter the no of People");
child = input.nextInt();
if(child < 0){
System.out.println("Enter a Positive Value");
}
}
catch(InputMismatchException e){
input.next();
System.out.println("(Invalid Input! Enter a numeric Value"); <---- Will give out the error if user enters a character
}
}while(child < 0);
当用户输入字母表时,程序在错误发生后结束 我需要在它之后循环它
答案 0 :(得分:1)
由于您没有在我的问题上发布任何答案,这里有一个猜测答案,但我很确定问题如下:
进入循环时,child
变量的值肯定为0或更大。在尝试将String
转换为int
时,child
的值当然不会改变,因此测试未得到满足。
这是在catch
子句中使用的简单技巧:
catch(InputMismatchException e){
input.next();
System.out.println("(Invalid Input! Enter a numeric Value");
child = -1;
}
只需将child
设置为小于0
,这样当您捕获异常时,它将始终循环返回。