본문 바로가기
공부/과제.

JAVA 문제풀이 11

by 햄이; 2021. 4. 26.

 

 

 

Q1. 비행기 예약 프로그램 만들기(이차원 배열)

package Day9;

import java.util.Scanner;

/*
 * Q.18
 * 비행기 예약 프로그램 만들기
 * 8줄 2개의 좌석이 존재합니다.
 * 1. 예매 2. 빈좌석 조회 3. 종료
 * 1 선택 시 좌석을 선택하세요 ex) 3 0(엔터) = 3행 0번 째 자리
 * 3행 0번째 자리가 비어있으면 "좌석 예약이 되었습니다." 출력 
 * 만약 예약이 되어있다면 "이미 예약된 좌석입니다." 출력 후 첫 화면 이동
 * 만약 모든 좌석이 예약이 되어있다면 "좌석을 선택하세요"가 출력되지 않고,
 * "죄송합니다. 모든 좌석의 예매가 끝났습니다." 출력 이후에 첫 화면으로 이동합니다.
 * 2 선택 시 비어있는 좌석의 정보를 전체 출력합니다 ex) 0행 1번, 1행 0번
 * 3 입력 시 "프로그램을 종료합니다."출력 후 프로그램 종료합니다.
 * (단, 첫 화면에서 1,2,3 이외의 입력은 잘못된 입력을 출력해줘야합니다.
 * 1번 좌석 선택시에도 줄 0~7 좌석 0~1 입력 이외의 값을 입력하면 
 * 잘못된 입력입니다 를 출력하고 첫 화면 이동)
 * 
 * */
public class Question1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		int [][] arr = new int[8][2];

		while(true) {
			System.out.println("비행기 예약 프로그램입니다. 원하는 메뉴를 선택하세요.");
			System.out.println("1. 좌석 예매  | 2. 빈 좌석 조회  | 3. 프로그램 종료 ");
			int choice = sc.nextInt();


			if(choice == 1) {
				int cnt = 0;
				for(int i=0; i<8; i++) {
					for(int j=0; j<2; j++) {
						if(arr[i][j]==0) {
							cnt++;
						}
					}
				}

				if(cnt != 0) {
					System.out.println("예매하실 좌석을 선택해주세요 ex) 0~7줄 0~1좌석");
					System.out.println("0~7사이의 줄을 선택해주세요 ");
					int userRow = sc.nextInt();
					System.out.println("0~1사이의 좌석을 선택해주세요.");
					int userCol = sc.nextInt();

					if(userRow>=0 && userRow<=7 && userCol>=0 && userCol<=1) {

						if(arr[userRow][userCol] == 0) {
							arr[userRow][userCol] = 1;
							System.out.println("감사합니다. 좌석이 예매 완료되었습니다.");
							System.out.println("처음 화면으로 돌아갑니다.");
							System.out.println();
						}else {
							System.out.println("죄송합니다. 이미 예약된 좌석입니다.");
							System.out.println("처음 화면으로 돌아갑니다.");
							System.out.println();
						}
					}else {
						System.out.println("잘못된 좌석 선택입니다. 처음 화면으로 돌아갑니다.");
						System.out.println();
					}
				}else {
					System.out.println("모든 좌석의 예매가 끝났습니다.처음 화면으로 돌아갑니다.");
					System.out.println();
				}


			}else if(choice ==2) {
				System.out.println("빈 좌석 조회 화면입니다. 현재 빈 좌석은");
				for(int i=0; i<8; i++) {
					for(int j=0; j<2; j++ ) {
						if(arr[i][j] == 0) {
							System.out.print(i+" "+j+"  ");
						}
					}
				}
				System.out.println("좌석입니다.");
				System.out.println("초기화면으로 돌아갑니다.");
				System.out.println();
			}else if(choice == 3) {
				System.out.println("비행기 예약 프로그램을 종료합니다.");
				break;

			}else {

				System.out.println("잘못된 메뉴 입력입니다. 초기화면으로 돌아갑니다.");
				System.out.println();
			}
		}
	}

}

위 실행 결과

 

이차원 배열을 연습하는 문제였다.

사실 굳이 row와 col을 따로 받지 않아도

되는 문제라고 하셨지만

후다닥 풀고 싶어 따로 나눠 풀었다ㅎㅎ

개인적으로 모든 좌석의 예매가 끝났습니다 부분

테스트가 너무 귀찮았던...😭

댓글