예제 목표
제공된 코드를 비즈니스로 나누고 분석하며 반복하여 타이핑해본다.
프로그램을 절차에 따라 입력하고 실행해보며 구조를 파악한다.
package ex07.ch01;
import java.util.ArrayList;
import java.util.Scanner;
class Movie01 {
private String title;
private String[] seats; // 1차원 배열로 좌석 관리
public Movie01(String title, int seatCount) { // 책임-> 영화명, 좌석 수
this.title = title;
this.seats = new String[seatCount]; // 좌석 배열 생성
for (int i = 0; i < seatCount; i++) {
seats[i] = "A" + (i + 1); //좌석 번호 저장 A1~
}
}
public String getTitle() {
return title;
}
public void showSeats() {
System.out.println("\n=== [" + title + "] 좌석 목록 ===");
for (String seat : seats) {
if (seat.equals("X")) {
System.out.println("[예약됨] ");
} else {
System.out.println("[" + seat + "]");
}
}
System.out.println(); //줄바꿈
}
public boolean reserveSeat(String seatNumber) {
for (int i = 0; i < seats.length; i++) {
if (seats[i].equals(seatNumber)) {
seats[i] = "X"; //예약 완료 표시
System.out.println(seatNumber + " 좌석이 예약되었습니다.");
return true;
}
}
System.out.println("잘못된 좌석 번호이거나 이미 예약된 좌석입니다.");
return false;
}
}
public class MovieReservation01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//영화 객체 생성
ArrayList<Movie> movies = new ArrayList<Movie>();
movies.add(new Movie("인셉션", 5)); // 영화명, 좌석 수
movies.add(new Movie("어벤져스", 5)); // 영화명, 좌석 수
movies.add(new Movie("인터스텔라", 5)); // 영화명, 좌석 수
while (true) {
System.out.println("\n=== 영화 예약 시스템 ===");
System.out.println("1. 영화 목록보기");
System.out.println("2. 좌석 예약하기");
System.out.println("3. 종료");
System.out.println("메뉴 선택: ");
int choice = sc.nextInt();
sc.nextLine(); // 개행 문자 처리
if (choice == 1) {
System.out.println("\n=== 영화 목록 ===");
for (int i = 0; i < movies.size(); i++) {
System.out.println((i + 1) + ". " + movies.get(i).getTitle());
}
} else if (choice == 2) {
System.out.println("\n=== 영화 목록 ===");
for (int i = 0; i < movies.size(); i++) {
System.out.println((i + 1) + ". " + movies.get(i).getTitle());
}
System.out.println("영화 번호 선택: ");
int movieChoice = sc.nextInt();
sc.nextLine(); // 개행 문자 처리
if (movieChoice < 1 || movieChoice > movies.size()) {
System.out.println("잘못된 선택입니다.");
continue;
}
Movie selectedMovie = movies.get(movieChoice - 1);
selectedMovie.showSeats();
System.out.println("예약할 좌석 번호 입력 (예: A1): ");
String seatNumber = sc.nextLine();
selectedMovie.reserveSeat(seatNumber);
} else if (choice == 3) {
System.out.println("프로그램을 종료합니다.");
break;
} else {
System.out.println("잘못된 입력입니다.");
}
}
sc.close();
}
}Share article