/* 배열 응용 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();
}
}
댓글
댓글 쓰기