무룩 공부방

[Java02] 29. 예외(exception) 처리 응용 (Eclipse) 본문

IT/Java02_Intermediate

[Java02] 29. 예외(exception) 처리 응용 (Eclipse)

moo_look 2023. 10. 15. 17:00

# 문제

3개의 정수를 입력받아 합을 구하는 프로그램을 작성하시오
사용자가 정수가 아닌 문자를 입력했을 때 예외를 처리하여 다시 입력 받도록 하자

 

<실행 예>
0 >> 5
1 >> love 
정수가 아닙니다 다시입력하세요
1 >> 4
2 >> 5
합은 14


package java02_intermediate;

import java.util.Scanner;

interface TotSum {
	void sum(); // 3개의 정수를 입력받아 합을 구하는 프로그램
}

class Hap implements TotSum {
	
	Scanner sc = new Scanner(System.in);
	
	@Override
	public void sum() {
		
		int hap = 0;
		int s = 0;
		
		System.out.print("정수 3개 입력 ");
		for(int i = 0; i < 3; i++) {
			
			System.out.print(i + " >> ");
			try {
				s = sc.nextInt(); 
			} catch (Exception e) {
				System.out.print("정수를 다시 입력해주세요");
				sc.next(); // 입력스트림에 있는 정수가 아닌 토큰을 버린다
				i--;
				continue;
			}
			hap += s;
		
		}
		System.out.println("합은 "+hap);
		sc.close();
		
	}
	
}

public class Java29_Exception {

	public static void main(String[] args) {
		
		Hap hap = new Hap();
		hap.sum();
		
	}

}

##

코드 중 catch문에서 sc.next(); 를 활용한 부분은 입력스트림에 있는 정수가 아닌 토큰을 버리는 기능을 해준다고 한다.

이 부분은 추후에 스트림을 공부하면서 좀 더 살펴볼 예정이다.
문자를 어떤 변수에 저장되지 않으면 버퍼안에 있는 내용이 사라진다고 한다.

(scanner 버퍼 비우기)