Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

Test . exception 본문

JAVA/chapter19_exception

Test . exception

GAWON 2023. 5. 30. 18:13
Q2. Test02.java		
사용자로부터 10이상의 정수를 입력 받아 난수 (0 ~ 9)로 나눈결과를 출력하시오.
위과정을 100번 반복하여 출력하며, 나눌 수없는 경우에는 나눈 결과를 0으로 대신출력한다.

							   
Q3. Test03.java	
나이를 입력 받아 출력하시오. 
나이가 0 ~ 150 사이의 범위를벗어나면 AgeException 클래스를 이용하여 예외를 처리하시오.
나이를 입력 받기 위해 int getAge() 메소드를 이용하시오.

								   
Q4. Test04.java									   
주민등록 번호 (하이픈 포함)를 입력 받아 출력하시오.
주민등록번호가 14글자가 아니면 PerIDException 클래스를 이용하여 예외를 처리하시오.
주민등록번호를 입력받기 위해 String getPerID() 메소드를 이용하시오.		


Q5. Test05.java		
Up-Down 게임
1 ~ 100 사이의 난수를 발생시켜 해당 값을 맞출때까지 게임을 진행하시오.
다음의 경우 예외를 발생시키시오.
1) 사용자가 1 ~ 100 이외의 값을 입력한 경우 NumberOutOfBoundsException 클래스를 이용하여 예외 처리
2) 정수대신 다른 데이터 (예: 실수, 문자) 등을 입력한 경우
package org.joonzis.test;

import java.util.Random;
import java.util.Scanner;

//Q2. Test02.java		
//사용자로부터 10이상의 정수를 입력 받아 난수 (0 ~ 9)로 나눈결과를 출력하시오.
//위과정을 100번 반복하여 출력하며, 나눌 수없는 경우에는 나눈 결과를 0으로 대신출력한다.
public class Test02 {
	public static void main(String[] args) {
		
		Random ran = new Random();
		Scanner sc = new Scanner(System.in);
		
		
		for(int i=0; i<100; i++) {
			System.out.print("10 이상의 정수 입력 >> ");
			int selNum = sc.nextInt();
			int ranNum = ran.nextInt(10);
			
			if(selNum < 10) {
				// 입력 값이 10보다 작을 때
				i--;
				continue;
			}else {
				try {
					System.out.println((i+1) + "번째 나누기 결과 : " + (selNum / ranNum));
				} catch (ArithmeticException e) {
					System.out.println((i+1) + 
							"번째 나누기 결과(0으로 나눈 결과) " + 0);
				}
				
			}
		}
	}
}
package org.joonzis.test;

import java.util.Scanner;

class AgeException extends Exception{
	private static final long serialVersionUID = 1L;
	public AgeException(String message) {
		super(message);
	}
}
public class Test03 {
	
	static Scanner sc = new Scanner(System.in);
	
	public static int getAge() throws AgeException{
		System.out.print("나이 입력 ( 0 ~ 150 ) >>");
		int age = sc.nextInt();
		
		if(age < 0 || age > 150) {
			throw new AgeException("입력 가능한 나이는 0~150 입니다.");
		}
		return age;
	}
	
	public static void main(String[] args) {
		try {
			int age = getAge();
			System.out.println("나이는 " + age + "살 입니다.");
		} catch (AgeException e) {
			System.out.println(e.getMessage());
		} finally {
			if(sc != null) {
				sc.close();
			}
		}
	}
}
package org.joonzis.test;

import java.util.Scanner;

//Q4. Test04.java									   
//주민등록 번호 (하이픈 포함)를 입력 받아 출력하시오.
//주민등록번호가 14글자가 아니면 PerIDException 클래스를 이용하여 예외를 처리하시오.
//주민등록번호를 입력받기 위해 String getPerID() 메소드를 이용하시오.
class PerIDException extends Exception{
	private static final long serialVersionUID = 1L;
	public PerIDException(String message) {
		super(message);
	}
}
public class Test04 {
	static Scanner sc = new Scanner(System.in);
	
	public static String getPerID() throws PerIDException{
		System.out.print("주민등록번호 입력 (- 포함) >> ");
		String perID = sc.next();
		if(perID.length() != 14) {
			throw new PerIDException("올바른 주민등록번호가 아닙니다.");
		}
		return perID;
	}
	public static void main(String[] args) {
		try {
			String perID = getPerID();
			System.out.println("입력한 주민등록번호 : " + perID);
		} catch (PerIDException e) {
			System.out.println(e.getMessage());
		} finally {
			if(sc != null) {
				sc.close();
			}
		}
	}
}
package org.joonzis.test;
import java.util.InputMismatchException;
import java.util.Random;
/*Q5. Test05.java		
Up-Down 게임
1 ~ 100 사이의 난수를 발생시켜 해당 값을 맞출때까지 게임을 진행하시오.
다음의 경우 예외를 발생시키시오.
1) 사용자가 1 ~ 100 이외의 값을 입력한 경우 NumberOutOfBoundsException 클래스를 이용하여 예외 처리
2) 정수대신 다른 데이터 (예: 실수, 문자) 등을 입력한 경우*/
import java.util.Scanner;
class Updown{
	private int answer;
	private int count;
	private Scanner sc = new Scanner(System.in);
	public Updown() {
		Random ran = new Random();
		answer = ran.nextInt(100)+1;
	}
	public int challenge() throws NumberOutOfBoundsException, InputMismatchException{
		count++;
		System.out.print("1~100 사이의 정수 입력 >> ");
		int user = sc.nextInt();
		if(user < 1 || user > 100) {
			throw new NumberOutOfBoundsException("1~100 사이의 정수를 입력하세요!!!!!");
		}
		return user;
	}
	public void play() {
		while(true) {
			try {
				int user = challenge();
				
				if(user > answer) {
					System.out.println("Down !!");
				}else if(user < answer) {
					System.out.println("Up !!");
				}else {
					System.out.println("정답 : " + answer + "(" + count + "회 만에 성공!)");
					break;
				}
				
			} catch (NumberOutOfBoundsException e) {
				System.out.println(e.getMessage());
			} catch (InputMismatchException e) {
				System.out.println("정수만 입력하세요!");
				sc.next();
			}
		}
	}
}
public class Test05 {
	public static void main(String[] args) {
		Updown game = new Updown();
		game.play();
	}
}
class NumberOutOfBoundsException extends Exception{
	private static final long serialVersionUID = 1L;
	public NumberOutOfBoundsException(String message) {
		super(message);
	}
}

'JAVA > chapter19_exception' 카테고리의 다른 글

chapter09 : exception  (0) 2023.05.30
chapter08 : exception  (0) 2023.05.30
chapter07 : exception  (0) 2023.05.30
chapter06 : exception  (0) 2023.05.30
chapter05 : exception  (0) 2023.05.30