Frog is cry
예외처리(엘레베이터 예제) 본문
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