TIL

[키오스크 만들기] 키오스크 만들기 1일차

oceanflow 2025. 1. 13. 23:32

 

package com.example.kiosk3;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<MenuItem> menuItems = new ArrayList<>();

        // add 함수를 통해 new MenuItem(이름, 가격, 설명) List에 삽입
        menuItems.add(new MenuItem("ShakeBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("SmokeShake", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("CheeseBurger", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("HamBurger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));

        Kiosk kiosk = new Kiosk(menuItems);
        kiosk.start();
    }
}
package com.example.kiosk3;

import java.util.List;
import java.util.Scanner;

public class Kiosk {
    private final List<MenuItem> menuItems;

    public Kiosk(List<MenuItem> menuItems) {
        this.menuItems = menuItems;
    }

    public void start() {

        Scanner scan = new Scanner(System.in);
        boolean running = true;     // while문의 조건 boolean

        while (running) {

            // 출력 부분
            System.out.println("[ SHAKE SHAKE MENU ]");
            // 반복문을 활용해 List 안에 있는 MenuItem을 하나씩 출력
            for (int i = 0; i < menuItems.size(); i++) {
                MenuItem item = menuItems.get(i);
                System.out.printf("%-2d. %-15s | W%-4.1f | %s%n", (i + 1), item.getName(), item.getPrice(), item.getDescribe());
            }
            System.out.printf("%-2d. %-10s | %s%n", 0, "종료", "종료");

            int choice = scan.nextInt();    // 사용자로부터 숫자 입력 받음

            // 입력 받은 숫자를 바탕으로 수행할 로직을 실행
            switch (choice) {
                case 0:
                    running = false;
                    break;
                case 1:
                    System.out.printf("%-15s | W%-4.1f | %s%n", menuItems.get(0).getName(), menuItems.get(0).getPrice(), menuItems.get(0).getDescribe());
                    System.out.println("");
                    break;
                case 2:
                    System.out.printf("%-15s | W%-4.1f | %s%n", menuItems.get(1).getName(), menuItems.get(1).getPrice(), menuItems.get(1).getDescribe());
                    System.out.println("");
                    break;
                case 3:
                    System.out.printf("%-15s | W%-4.1f | %s%n", menuItems.get(2).getName(), menuItems.get(2).getPrice(), menuItems.get(2).getDescribe());
                    System.out.println("");
                    break;
                case 4:
                    System.out.printf("%-15s | W%-4.1f | %s%n", menuItems.get(3).getName(), menuItems.get(3).getPrice(), menuItems.get(3).getDescribe());
                    System.out.println("");
                    break;
                default:
                    System.out.println("숫자를 잘 못 입력하셨습니다!");
                    System.out.println("다시 입력해 주세요");
                    System.out.println("");
            }
        }
    }
}
package com.example.kiosk3;

public class MenuItem {
    private final String name;
    private final double price;
    private final String describe;

    public MenuItem(String name, double price, String describe) {
        this.name = name;
        this.price = price;
        this.describe = describe;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    public String getDescribe() {
        return describe;
    }
}

 

< MenuItem 을 관리하는 리스트가 필드로 존재합니다.> 와

< List<MenuItem> menuItems 는 Kiosk 클래스 생성자를 통해 값을 할당합니다.>,

< Kiosk 객체를 생성하고 사용하는 main 함수에서 객체를 생성할 때 값을 넘겨줍니다.> 의 요구 사항이 이해가 잘 안 갔었는데

말 그대로 Kiosk 생성자를 만들고 값을 List<menuItem> menuItems 로 할당하는 것이었고 

리스트를 Kiosk 필드에 선언하는 것이었다.

그리고 Main에서 Kiosk kiosk = new Kiosk(menuItems); 이렇게 kiosk 객체를 생성하면서 menuItems 를 생성자로 넘격주었다.

'TIL' 카테고리의 다른 글

[스타크래프트 게임 출력] 2일차  (1) 2025.01.15
[스타크래프트 게임 출력] 1일차  (0) 2025.01.14
오늘의 알고리즘  (0) 2025.01.10
[계산기 만들기] 계산기를 만들기 3일차  (0) 2025.01.09
JAVA 프로그래밍 기초  (0) 2025.01.07