我正在尝试执行一些扫描用户输入值的代码。此操作包含在我编写的自定义方法中,名为 getTriangleDim(); 该方法读取用户的 int 值,确保它在一定范围内,然后返回输入的 int 值。该方法效果很好,我对此没有任何问题。
当我为我的 getTriangleDim() 方法输入一个非整数值时,就会出现问题。它给了我一个 InputMismatchException 错误。我已将 try-catch 语句写入 do-while 循环以尝试解决此问题。但这是我第一次使用 try-catch 语句,我显然遗漏了一些东西。
下面是嵌套在 do-while 循环中的 try-catch 语句的代码:
//loop to scan for triangle dimension
boolean bError = true;
int triangle;
do{
try {
triangle = getTriangleDim();
bError=false;
}
catch (Exception e){
System.out.println("You did not enter an integer, please enter an integer value");
triangle = getTriangleDim();
}
}while (bError);
如果我通过输入一个 char 值代替 int 来测试它,它实际上会捕获一次错误,然后打印我的“你没有......”语句。但是,如果我重新输入另一个非整数数字,我会再次收到运行时错误,提示......你猜对了...... InputMismatchException 错误。
我的方法的代码在这里:
//method for scanning triangle dimensions from keyboard
public static int getTriangleDim(){
int triangle = 0;
Scanner keyboard = new Scanner(System.in);
do{
System.out.print("Enter a non-zero integer length (+/-1 - +/-16): ");
triangle = keyboard.nextInt();
if((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)))
System.out.println("Inpute value outside of range");
}while((!(triangle <= 16 && triangle >= 1))&&(!(triangle >= -16 && triangle <= -1)));
return triangle;
}
我需要 Do-While 循环才能继续,但我不断收到这些错误。