사용자 입력 값을 검색하는 코드를 실행하려고합니다. 이 액션은 내가 작성한 커스텀 메소드 인 getTriangleDim()에 포함되어있다. 이 메소드는 사용자 int 값을 읽고 특정 범위 내에 있는지 확인한 다음 입력 된 int 값을 리턴합니다. 이 방법은 훌륭하게 작동하며 문제가 없습니다.Java : Do-While 루프 내에서 Try-Catch 문을 사용합니다.
내 getTriangleDim() 메소드에 int가 아닌 값을 입력하면 문제가 발생합니다. InputMismatchException 오류가 발생합니다. 이 문제를 해결하기 위해 do-while 루프에 try-catch 문을 작성했습니다. 그러나 이것은 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);
내가 INT 대신에 char 값을 입력하여 테스트하는 경우는, 실제로 오류를 한 번에 잡는다 : 여기
는 DO-while 루프 내에서 중첩 된 시도-catch 문에 대한 코드입니다 , 그리고 나서 "당신은 ....."진술을 인쇄합니다. 그러나 다른 비 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;
}
내가 필요로하는 마 - 동안 루프가 계속하려면,하지만 난이 오류가 계속.
새로운 예외 '클래스 NotIntegerException을 정의하고 예외 {..}를 확장하여 외부에 잡아 다른 유형의 예외와 구별 할 수 있습니다. –