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 |