Java Scannerクラスメソッドの例の表示


Scannerクラスメソッドに関する例


[質問]Java Essential例3-14:入力エラーの例外


try-catch-finallyブロックを使用して整数を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を繰り上げて減らす.