| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- java
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- sql #내일배움캠프 #스파르타코딩클럽
- java #문법
- Today
- Total
Hyeok의 웹 개발 블로그
<2025.03.11> 키오스크 과제 Lv 3 본문
▶ 키오스크 키오스크 과제 Lv3 을 구현해 보았습니다.
조건
- main 함수에서 관리하던 전체 순서 제어를 Kiosk 클래스를 통해 관리
→ Kiosk 클래스 생성하기
- 설명 : 키오스크 프로그램의 메뉴를 관리하고 사용자 입력을 처리하는 클래스
- MenuItem을 관리하는 리스트가 필드로 존재
- main 함수에서 관리하던 입력과 반복문 로직은 이제 start함수를 만들어 관리
- List<MenuItem> menuItem 는 Kiosk 클래스 생성자를 통해 값을 할당
- Kiosk 객체를 생성하고 사용하는 main 함수에서 객체를 생성할 때 값을 넘겨준다.
우선 MenuItem을 관리하는 리스트를 만들어줍니다.
List<MenuItem> menuItems = new ArrayList<>();
그리고 메서드 부분에 start 함수를 만들어주고 반복문을 활용합니다.
start 함수 반복문 while 안에는 main 매서드에 있던 메뉴의 내용을 가져와서 반복 시켜줍니다.
void start(){
while(true){
System.out.println("[ SHAKESHACK MENU ] ");
System.out.println("1. ShackBuger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거" );
System.out.println("2. SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
System.out.println("3. Cheesebuger | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거");
System.out.println("4. Hamburger | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거");
System.out.println("0. 종료 | 종료");
number = scanner.nextInt(); 로 지정해서 다음에 오는 switch 값에서 number 값을 입력해 출력할 수 있도록 만들어줍니다.
int number = scanner.nextInt();
scanner.nextLine();
여기서 switch 활용해서 번호를 입력했을 때, 선택한 메뉴의 내용이 나오도록 설정해줍니다.
switch (number){
case 1:
case 2:
case 3:
case 4:
}
여기서 MenuItem 클래스 메서드 부분을 게터로 불러와서 사용해줍니다.
System.out.println("선택한 메뉴 : " + menuItems.get(0).getName() + " | W " + menuItems.get(0).getPrice() + " | " + menuItems.get(0).getDescription());
각 number 값에 맞는 내용을 게터를 활용해서 불러와 이름, 가격, 설명란에 리스트에 저장된 값을 불러옵니다.
System.out.println("선택한 메뉴 : " + menuItems.get(1).getName() + " | W " + menuItems.get(1).getPrice() + " | " + menuItems.get(1).getDescription());
System.out.println("선택한 메뉴 : " + menuItems.get(2).getName() + " | W " + menuItems.get(2).getPrice() + " | " + menuItems.get(2).getDescription());
System.out.println("선택한 메뉴 : " + menuItems.get(3).getName() + " | W " + menuItems.get(3).getPrice() + " | " + menuItems.get(3).getDescription());
각 case 끝에는 break를 활용해 switch 문을 빠져나올 수 있게 해줍니다.
switch (number){
case 1:
System.out.println("선택한 메뉴 : " + menuItems.get(0).getName() + " | W " + menuItems.get(0).getPrice() + " | " + menuItems.get(0).getDescription());
// menuItem.get(0); 으로만 해서 soutv 했을땐, kiosk_lv2.lv2.MenuItem@52cc8049 와 같이 나왔음. >> @~~~ 주소를 나타낸다.
break;
case 2:
System.out.println("선택한 메뉴 : " + menuItems.get(1).getName() + " | W " + menuItems.get(1).getPrice() + " | " + menuItems.get(1).getDescription());
break;
case 3:
System.out.println("선택한 메뉴 : " + menuItems.get(2).getName() + " | W " + menuItems.get(2).getPrice() + " | " + menuItems.get(2).getDescription());
break;
case 4:
System.out.println("선택한 메뉴 : " + menuItems.get(3).getName() + " | W " + menuItems.get(3).getPrice() + " | " + menuItems.get(3).getDescription());
break;
}
만약 숫자를 0번을 넣었을 경우에는 주문을 종료하게 설정을 해줍니다.
if (number == 0){
System.out.println("주문을 종료합니다.");
break;
}
그리고 Main 클래스에는 함수 start 를 실행시켜줍니다.
package kiosklv3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<MenuItem> menuItems = new ArrayList<>();
Kiosk kiosk = new Kiosk();
kiosk.start();
}
}
마무리
- switch 문 안에 게터를 사용할 때, 처음에는 menuItem.get(0); 으로해서 soutv 를 했을땐,
kiosk_lv2.lv2.MenuItem@52cc8049
이와 같은 결과 값이 나왔습니다. 이 결과 값은 menuItem 의 0번 째에 있는 리스트의 주소라는 것을 알게되었습니다.
그래서
menuItems.get(0).getName()
MenuItem 클래스 메서드 부분의 게터를 활용해 작성해 주었더니 정상적으로 List에 저장된 메모리를 가져오는 것을 알 수 있었습니다.
'TIL > Java' 카테고리의 다른 글
| <2025.03.13> 키오스크 과제 Lv4 and Lv5 (0) | 2025.03.13 |
|---|---|
| <2025.03.12> ENUM, 동등성과 동일성 (0) | 2025.03.12 |
| <2025.03.10> 키오스크 과제 Lv2 (0) | 2025.03.10 |
| <2025.03.07> 키오스트 과제 Lv1 (0) | 2025.03.07 |
| <2025.03.06>Java 챕터 [3-1] ~[3~3] (0) | 2025.03.06 |