Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

키오스크 과제 2일차 본문

Today I Learned

키오스크 과제 2일차

seaking110 2025. 1. 14. 20:58

Lv 2. 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리하기

  • 햄버거 메뉴를 MenuItem 클래스와 List를 통해 관리
  • 햄버거 클래스
    • 필드 
      • 이름
      • 가격
      • 설명
  • 메뉴의 이름의 길이에 따라 뒤에 가격과 설명의 위치가 바뀌는걸 방지하기 위해 printf를 사용했다
  • 제목은 %-20s 를 사용해서 20줄이 안될 경우 공백으로 처리하게 했고 -를 붙여 왼쪽으로 정렬 시켰다!
  • 20줄이 넘는 메뉴가 나온다면...? 음...혹시 다른 방법이 있을까? 20줄 넘으면 ...으로 보이게 관리할까?
  • html에선 ...으로 나오게가 있는데 java에선 찾아도 안보인다.
System.out.printf("%d. %-20s | W %.1f | %s\n",count,menu.name, menu.price,menu.text);

 

 

Lv 3. 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기

  • kiosk 클래스 생성
public class Kiosk {
    List<MenuItem> menuItems;

    public Kiosk (List<MenuItem> menuItems) {
        this.menuItems = menuItems;
    }
    
    public void start(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("[ MOMS TOUCH MENU ]");
            int count = 1;
            // list에 있는 값을 반복문으로 가져와 출력, 문자열의 길이를 맞추기 위해 문자열 포맷팅 사용
            for (MenuItem menu : menuItems) {
                System.out.printf("%d. %-20s | W %.1f | %s\n",count,menu.name, menu.price,menu.text);
                count++;
            }
            System.out.println("0. 종료     | 종료 ");
            // 숫자가 아닌 문자가 들어 왔을 때의 예외처리
            try {
                int n = sc.nextInt();
                // 입력 값에 따른 결과 처리
                if (n == 0) {
                    System.out.println("프로그램을 종료합니다.");
                    break;
                } else if (n > menuItems.size()) {
                    System.out.println("잘못된 번호를 입력했습니다.");
                } else {
                    System.out.printf("선택한 메뉴 : %s | W %.1f | %s\n",menuItems.get(n-1).name, menuItems.get(n-1).price,menuItems.get(n-1).text);
                }
            } catch (InputMismatchException e) {
                System.out.println("문자가 아닌 숫자를 입력해주세요.");
                sc.nextLine();
            }
        }
    }
}
  • 입력 값 예외 처리 추가
  • Main 에서는 객체를 생성하고 넘겨주는 역할
  • Kiosk 클래스의 start 메서드에서 입력 받는 것과 메뉴창을 띄워주는 반복문 로직 진행
  • 아직까진 어려웠던 점은 없었다!

'Today I Learned' 카테고리의 다른 글

분할 정복을 이용한 거듭제곱  (0) 2025.01.16
키오스크 과제 3일차  (0) 2025.01.15
객체간의 결합도와 다형성  (0) 2025.01.14
키오스크 과제 1일차  (0) 2025.01.13
계산기 만들기 트러블 슈팅  (0) 2025.01.10