관리 메뉴

Frog is cry

예외처리(엘레베이터 예제) 본문

JAVA/복습

예외처리(엘레베이터 예제)

Frog is cry 2020. 7. 29. 19:34
package 예외처리;

public class Try {
	

	
	public static void main(String[] args) {
		
//		System.out.println(10/0);
//		System.out.println("종료");
//		분모가 0이라 오류가 발생함
//		위에칸이 오류라 아랫칸에있는 종료를 출력할수 없지만
//		무조건 종료를 출력해주고 싶을때 사용함.
		
		try {
			System.out.println(10/0);
		} catch (ArithmeticException e) {		
			System.out.println("0으로 나눌 수 없습니다.");
			System.out.println(e.getMessage());	// 어떤 오류메세지인지 출력
			e.printStackTrace();				// 오류 내용까지 출력
		}	
		
		System.out.println("종료");
	}
}
package 예외처리;

public class Try2 {
	
	public static void main(String[] args) {
		int [] arData = new int[5];
		
		for (int i = 0; i < 100; i++) {
			System.out.println(i);
			try {
				arData[i] = i+1;	
			} catch (Exception e) {
				break;
			}
		}
		
		System.out.println("정상 종료");
	}
}

엘레베이터예제

package 예외처리.엘레베이터_예제;
// 추상클래스
// 엘레베이터 설계

public abstract class Lift {
	
	static int floor = 0;	// 프로그램이 종료됐을때 초기화되어야 하기 때문에 스테틱으로 사용
	
	abstract void up();
	abstract void down();
	abstract void start(int choice);
	abstract void stop();
	abstract void go();
	
	
	
	
}
package 예외처리.엘레베이터_예제;

import java.util.Scanner;

public class Elevator extends Lift{
	
	final int maxFloor = 10;
	final int minFloor = -3;
	
	@Override
	void up() {
		floor++;
	}

	@Override
	void down() {
		floor--;
	}

	@Override
	void start(int choice) {
		if(choice < floor) {	// ex) 현재층수는 5층 1층을 누름  5-1은
			for (int i = 0; i <= floor-choice+i; i++) {
				if(floor!=0) {
					System.out.println(floor + "층");
					try {
						Thread.sleep(1000);
					}catch (InterruptedException e) {
				  }
				}
				down();
			}
			stop();
		}else if(choice != floor) {
			for (int i = 0; i <= choice-floor+i ; i++) {
				if(floor != 0) {
					System.out.println(floor +  "층");
				}
				up();
			}
			stop();
		}else {
			System.out.println("같은 층 선택 불가");
		}
	}

	@Override
	void stop() {
		System.out.println("★도착★");
	}

	@Override
	void go() {
		int choice = 0;
		String msg = "";
		while(true) {
			msg = "층수를 입력하세요(현재층 :" + floor + "층)";
			System.out.println(msg);
			choice = new Scanner(System.in).nextInt();
			if(choice > maxFloor || choice < minFloor) {
				System.out.println("B3층 부터 10층까지만 가능합니다.");
			}else {
				break;
			}
		}
		start(choice);
	}
	
}
package 예외처리.엘레베이터_예제;

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

public class Building {
	public static void main(String[] args) {
		Elevator e = new Elevator();
		Random r = new Random();
		int cnt = 0;
		int floor = 0;
		String check = "";
		int [] arElevator = new int[5];
		
		cnt = r.nextInt(6);
		for (int i = 0; i < cnt; i++) {
			arElevator[i] = 1;
		}
		
		while(true) {
			//최대 : 10층
			//최소 : -3층
			//0~13 -3 >>> -3 ~ 10
			floor = r.nextInt(e.maxFloor + (e.minFloor*-1)+1) + e.minFloor;
			if(floor!=0) break;
		}
		if(cnt == 0) {
			System.out.println("현재 탑승 인원 : 없음(최대5명");
		}else {
			System.out.println("현재 탑승 인원 : " + cnt + "명(최대5명");
		}
		System.out.println("Y : 타기       N : 보내기");
		check = new Scanner(System.in).next().toUpperCase();
		if(check.equals("Y")) {
			cnt++;
			try {
				arElevator[cnt-1] = 1;
				Elevator.floor = floor;
				e.go();
			} catch (Exception e1) {
				System.out.println("정원 초과");
			}			
		}
				
	}
}

'JAVA > 복습' 카테고리의 다른 글

오브젝트  (0) 2020.07.29
Wrapper 클래스  (0) 2020.07.29
익명클래스(카페예제)  (0) 2020.07.29
내부클래스(Out Class)  (0) 2020.07.29
For-each  (0) 2020.07.29
Comments