배열을 이용하여 간단한 극장 예약 시스템을 작성하여 보자


/* 배열 응용 2 */
/* 배열을 이용하여 간단한 극장 예약 시스템을 작성하여 보자 */
//****극장 예약 시스템****
//--------------------
//0 1 2 3 4 5 6 7 8 9
//--------------------
//0 0 0 0 0 0 0 0 0 0
package lambda;

import java.util.Scanner;

public class Lambda {
	public static void main(String[] args) {
		new Byul();
	}
}
/* 메인 코딩 영역 */
class Byul {
	Scanner sc;
	int[][] seats;
	boolean isVacant;
	int input;

	Byul() {
		this.sc = new Scanner(System.in); // 스캐너 생성
		this.seats = new int[10][2]; // 배열 할당
		isVacant = false;
		this.input = -1;
		this.main();
		this.sc.close(); // 스캐너 종료
	}
	// 핵심 코딩 영역
	private void main() {
		this.initSeats(); // 배열에 초기값(전좌석 0) 담는 함수

		while (true) {
			System.out.println(this.getSeats()); // 좌석 정보
			if (this.isVacant) { // 만석 확인용 boolean
				this.input = this.input(); // 좌석 선택
				// 0 공석이면 예약 허가, 1 예약돼있으면 예약 거부
				if (this.seats[this.input][1] == 0) {
					this.seats[this.input][1] = 1;
				} else {
					System.out.println("오류");
				}
			} else { // 만석일 시 프로그램 종료
				break;
			}
		}
	}
	// 배열에 초기값 담는 함수
	private void initSeats() {
		for (int i = 0; i < this.seats.length; i++) {
			this.seats[i][0] = i; // 1차원 : 좌석번호
			this.seats[i][1] = 0; // 2차원 : 0 공석, 1 예약석
		}
	}
	// 좌석 정보 생성 함수
	private String getSeats() {
		StringBuilder sb = new StringBuilder();
		int count = 0;
		sb.append("****극장 예약 시스템****\n");
		sb.append("--------------------\n");
		for (int i = 0; i < this.seats.length; i++) { // 띄어쓰기 제어
			sb.append((i != this.seats.length - 1) ? this.seats[i][0] + " " : this.seats[i][0]);
		}
		sb.append("\n--------------------\n");
		for (int i = 0; i < this.seats.length; i++) {
			sb.append((i != this.seats.length - 1) ? this.seats[i][1] + " " : this.seats[i][1]);
		}
		for (int i = 0; i < this.seats.length; i++) { // 공석 유무 확인
			if (this.seats[i][1] == 0) {
				this.isVacant = true; // 하나라도 공석이 있으면 반복문 종료
				sb.append("\n몇번째 좌석을 예약 하시겠습니까?");
				break;
			} else { // 예약석 개수 확인
				count++;
			}
		}

		if (count == 10) { // 예약석 10개면 프로그램 종료하기 위해 만석 boolean 값 갱신
			sb.append("\n만석");
			this.isVacant = false;
		}

		return sb.toString();
	}
	// 입력 받는 함수
	private int input() {
		return this.sc.nextInt();
	}
}

댓글

이 블로그의 인기 게시물

substring 예제: 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라

단체 채팅 구현