본문 바로가기
수업 문제(국비 지원)/Java

[JAVA] 2022.09.06 - 예외 처리

by byeolsub 2023. 4. 29.

문제 : 
  UnsupportFunctionException 클래스 구현하기
  1. 멤버변수 : private final int ERR_CODE;
  2. 멤버메서드 : 
      public int getErrCode() : ERR_CODE 값 반환
      public String getMessage() : 오버라이딩 메서드.
           부모클래스의 message 값과 ERR_CODE 값 반환.
  3. 예외처리를 안해도 되도록 구현.
  4. 생성자는 구동클래스의 호출에 맞도록 구현   
  
[결과]
지원하지 않는 기능입니다.오류코드:200
200
chap9.UnsupportFunctionException: 지원하지 않는 기능입니다.오류코드:200
	at chap9.Test1_A.main(Test1_A.java:31) 
문제
package chap9;

public class Test1 {
	public static void main(String[] args) {
		try {
			throw new UnsupportFunctionException("지원하지 않는 기능입니다.", 200);
		} catch (UnsupportFunctionException e) {
			System.out.println(e.getMessage());
			System.out.println(e.getErrCode());
			e.printStackTrace();
		}
	}

}

출력


package chap9;

class UnsupportFunctionException extends Exception  {
	private final int ERR_CODE;

	public int getErrCode() {
		return ERR_CODE;
	}
	UnsupportFunctionException(String msg, int ERR_CODE){
		super(msg);
		this.ERR_CODE = ERR_CODE;
	}
	@Override
	public String getMessage() {
		return super.getMessage()+"오류코드 :"+ERR_CODE;
	}
}
public class Test1 {
	public static void main(String[] args) {
		try {
			throw new UnsupportFunctionException("지원하지 않는 기능입니다.", 200);
		} catch (UnsupportFunctionException e) {
			System.out.println(e.getMessage());
			System.out.println(e.getErrCode());
			e.printStackTrace();
		}
	}
}

문제 : 
1부터 100까지 중 임의의 숫자를 컴퓨터가 저장하고, 
 값을 입력받아 저장된 값을 맞추는 프로그램을 작성하기

 * 단 1 부터 100까지의 숫자가 아닌 경우에는 1 과 100사이의 숫자만 입력하세요를 출력
 * 숫자가 입력이 안된 경우는 숫자만 입력하세요 를 출력하고 계속 입력을 받는다.
 * 정답을 맞춘 경우 프로그램을 종료
 * 종료 전 몇번의 입력만에 숫자를 맞추었는지 출력하기.
 * 단 입력 오류된 입력도 입력 건수에 포함된다.
 
[결과]
1부터 100까지의 숫자를 입력하세요
500
1부터 100까지의 숫자만 입력하세요
1부터 100까지의 숫자를 입력하세요
a
a는 숫자가 아닙니다.
1부터 100까지의 숫자를 입력하세요
50
큰수를 입력하세요
1부터 100까지의 숫자를 입력하세요
75
큰수를 입력하세요
1부터 100까지의 숫자를 입력하세요
85
작은수를 입력하세요
1부터 100까지의 숫자를 입력하세요
80
큰수를 입력하세요
1부터 100까지의 숫자를 입력하세요
82
큰수를 입력하세요
1부터 100까지의 숫자를 입력하세요
83
83:정답입니다. 입력 횟수:8
문제
package chap9;
public class Test2 {
	public static void main(String[] args) {

	}
}
package chap9;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int answer = (int) (Math.random()*100+1);
        int num;
        int count =0;
        while(true){
            count++;
            try {
                System.out.println("1부터 100까지의 숫자를 입력하세요");
                num = scan.nextInt();
                if(num<1||num>100){
                    throw new Exception("1에서 100까지의 숫자만 가능합니다.");
                } 
                else if (answer>num){
                    
                    System.out.println("더 큰수를 입력하세요.");
                    
                } else if (answer<num){
                    
                    System.out.println("더 작은수를 입력하세요.");
        
                } else { 
                    System.out.print("정답입니다.");
                    System.out.println("입력 횟수:" + count);
                    break;
                } 
            } catch (InputMismatchException e) {
                    scan.next();
                    System.out.println("숫자만 입력하세요.");
                    
            } catch (Exception e) {
                    System.out.println(e.getMessage());
            }
        }
        System.out.println();
    }   
}