在我的一个方法中,我正在编写一个try catch来验证用户的输入。如果用户输入了错误的数据类型,则再次调用该方法,并提示他们重新输入。出于某种原因,无论输入的值是什么,第二次调用该方法时,它总是返回0.
public static int enterNumGadgets(){
int numOfGadgetsIn = 0;
try{
System.out.println("");
System.out.println("Please enter the number of items you wish to insure.");
numOfGadgetsIn = EasyScanner.nextInt();
}
catch(InputMismatchException exception){
System.out.println("You must enter a number.");
EasyScanner.nextLine(); //consume new line left over
enterNumGadgets(); //call the method again
}
return numOfGadgetsIn;
}
第一次调用方法时输出的数据类型正确:
姓名:测试
参考编号:te123s
小工具数量:1
最贵的物品:1.0
第一次调用时输出的数据类型不正确,但第二次调用的数据类型正确:
姓名:测试
参考编号:te123s
小工具数量:0
最贵的物品:1.0
注意在第二次调用enterNumGadgets()后似乎忽略了新值int numOfGadgetsIn设置为try {...}并将其返回为0。
非常感谢任何帮助
答案 0 :(得分:0)
在第二次rekursiv调用(用户数据有效)后,您的数据不会分配给新变量。而是使用第一次调用的变量(用户数据无效),它仍为0.
这应该有效:
HEALTHCHECK
}