[Java] Scanner 클래스 메서드와 관련된 예제 풀어보기
Scanner 클래스 메서드와 관련된 예제
[문제] Java Essential 예제 3-14 : 입력 오류 시 발생하는 예외
try-catch-finally 블록을 이용하여 정수를 0 으로 나누는 경우에
"0으로 나눌 수 없습니다"를 출력하는 프로그램을 작성하라
⌨️ 코드 작성
import java.util.InputMismatchException;
import java.util.Scanner;
public class IntputMis {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("정수를 입력하세요");
int sum = 0, n = 0;
for (int i = 1; i <= 3; i++) {
System.out.print(i + ">>");
try {
n = scanner.nextInt();
}
catch (InputMismatchException e) {
System.out.println("정수를 써야 합니다.");
scanner.next(); //이 부분 주목
i--;
continue;
}
sum += n;
}
System.out.println("합은 " + sum);
scanner.close();
}
}
👉🏻 결과
-
k를 넣었을 때 예외가 발생하고, catch문으로 간다.
-
k는 nextInt()에서 예외가 발생하여 반환되지 못했으므로, 입력 버퍼에 저장이 된다.
-
따라서 next() 로 입력 버퍼에 저장되어있는 문자 k를 입력받아서, 입력 버퍼에 있는 k를 없애줘야 그 다음 반복문에서의 nextInt()가 정상적으로 수행된다.
-
i--는 다시 반복문의 조건식을 확인하러갈 때 예외 여부와 상관없이 i++가 될 것을 대비해 미리 i를 감소시켜주는 것이다.
Author And Source
이 문제에 관하여([Java] Scanner 클래스 메서드와 관련된 예제 풀어보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cse_pebb/Java-Scanner-클래스-메서드와-관련된-예제-풀어보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)