我正在尝试执行一段代码,用于扫描用户输入值。这个动作包含在我编写的一个自定义方法中,名为getTriangleDim(); 该方法读取用户输入的int值,确保它在特定范围内,然后返回输入的int值。该方法运行良好,没有任何问题。
当我在getTriangleDim()方法中输入一个非int值时,问题就出现了。它会给我一个InputMismatchException错误。我已经在do-while循环中编写了try-catch语句,以尝试解决此问题。但这是我第一次使用try-catch语句,显然我遗漏了一些东西。
以下是嵌套在do-while循环中的try-catch语句的代码:
当我在getTriangleDim()方法中输入一个非int值时,问题就出现了。它会给我一个InputMismatchException错误。我已经在do-while循环中编写了try-catch语句,以尝试解决此问题。但这是我第一次使用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进行测试,它会捕获错误并打印我的“you did not.....”语句。但是如果我重新输入另一个非int数字,我再次得到一个运行时错误,它说.......你猜对了........ InputMismatchException error。
我的方法代码如下:
//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 循环继续执行,但是我一直遇到这些错误。
class NotIntegerException extends Exception { .. }
并在外部捕获它,以区分它与其他类型的异常。 - Khaled.K