Java

Java문법) 예외처리 -3 (ClassCastException, InputMismatchException)

sejin2 2023. 11. 1. 14:00

4. ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생

출력결과 )

예외처리 후 

class Animal { 
}
class Dog extends Animal {
}
class Cat extends Animal {
} 
public class ClassCast05 { 
	public static void main(String[] args) { 
		try {
		Dog dog1 = new Dog();
			Animal an = dog1;
			Dog dog2 = (Dog)an;
			System.out.println("Dog 형변환");
			
			Animal an2 = new Animal();
			Cat cat = (Cat)an2;
			System.out.println("Cat 형변환");
		} catch(ClassCastException ce) {
			System.out.println("클래스 형변환 불가"); 
		}
	}  
}

출력결과 )

5. InputMismatchException : Scanner 클래스의 nextInt()를 호출하여 정수를 입력 받으려 하였지만, 사용자가 문자를 입력한 경우

public class InputMismatch07 { 
	public static void main(String[] args) { 
		Scanner scan = new Scanner(System.in);
		System.out.println("정수를 3개 입력하세요");
		
		int sum = 0;
		for(int i=1; i<=3; i++) {
			System.out.print(i + "번째 점수 : " );
			int num = scan.nextInt();
			sum += num;
		}
		System.out.println("합계 : " + sum);
		System.out.println("평균 : " + sum / 3.0);
	} 
}

출력결과 )

예외처리 후 

public class InputMismatch07 { 
	public static void main(String[] args) { 
		Scanner scan = new Scanner(System.in);
		System.out.println("정수를 3개 입력하세요");
		
		int sum = 0;
		for(int i=1; i<=3; i++) {
			System.out.print(i + "번째 점수 : " );
			try {
			int num = scan.nextInt();
			sum += num;
			} catch(InputMismatchException ie) {
				System.out.println("정수가 아닙니다 ! 0~100점 사이의 정수만 입력해주세요");
				scan.next();
				i--;
			}
		}
		System.out.println("합계 : " + sum);
		System.out.println("평균 : " + sum / 3.0);
	} 
}

출력결과 )