| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- sql #내일배움캠프 #스파르타코딩클럽
- java #문법
- java
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- Today
- Total
Hyeok의 웹 개발 블로그
<2025.03.10> 키오스크 과제 Lv2 본문
▶ 키오스크 과제 Lv 2 를 구현해 보았습니다
조건
- MenuItem 클래스 생성하기
1. 개별 음식 항목을 관리하는 클래스입니다. 현재는 햄버거만 관리합니다.
2. 클래스는 이름, 가격, 설명 필드를 갖습니다.MenuItem 클래스 생성하기
- main 함수에서 MenuItem 클래스를 활용하여 햄버거 메뉴 출력
1. MenuItem 객체 생성을 통해 이름, 가격, 설명 을 세팅
- List 를 선언하여 여러 MenuItem을 추가
- 반복문을 활용해 menuItems 를 탐색하면서 하나씩 접근
우선 MenuItem 클래스를 생성해서 속성 부분에 이름, 가격, 설명 필드를 생성하였습니다.
public class MenuItem {
// 속성
public String name;
public double price;
public String description;
그리고 main 클래스에 활용하기 위해 생성자를 생성했습니다.
// 생성자
MenuItem(String name, double price, String description){
this.name = name;
this.price = price;
this.description = description;
}
main에 MenuItem 클래스를 활용하여 햄버거 메뉴를 출력하였습니다.
MenuItem shackBuger = new MenuItem("ShackBuger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거");
MenuItem smokeShack = new MenuItem("SmokeShack",8.9,"베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
MenuItem cheesebuger = new MenuItem("Cheesebuger",6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거" );
MenuItem hamburger = new MenuItem("Hamburger", 5.4,"포테이토 번과 비프패티, 치즈가 토핑된 치즈버거" );
그리고 List를 선언하여 여러 MenuItem을 추가했습니다.
List<MenuItem> menuItems = new ArrayList<>();
menuItems.add(new MenuItem("ShackBuger",6.9,"토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
menuItems.add(new MenuItem("SmokeShack",8.9,"베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
menuItems.add(new MenuItem("Cheesebuger",6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
menuItems.add(new MenuItem("Hamburger", 5.4,"포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
마지막 반복문을 활용해 menuItems 에 접근했습니다.
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.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;
마무리
- Lv 2를 구현하는 중 클래스와 List의 개념이 부족하다는 것을 인지했습니다.
- 반복문을 작성할 때, menuItem.get(0)을 넣으면 리스트에 저장된 정보가 나올 것이라 생각했습니다.
kiosk.lv2.MenuItem@52cc8049
하지만, 이러한 값이 나오게되었고 이 값은 저장 된 주소의 값인 것을 알게 되었습니다.
그래서 이것을 해결하기 위해
menuItems.get(0).getName()
뒤에 getName()을 붙여 해결했습니다.
- 해결하는 과정에서 MenuItem 클래스 메서드 부분에
String getName(){
return this.name;
}
double getPrice(){
return this.price;
}
String getDescription(){
return this.description;
}
게터를 작성한 부분에 오류를 찾게 되었습니다. 이렇게 작성하기 전에는
String getName(){
return getName();
}
이렇게 작성을 했었습니다. 이렇게 작성하고 main 클래스를 Run 했더니 무한 반복하는 오류를 발견했습니다.
이에 대해 피드백을 받은 결과 메서드 return 값이 getName이면 생성자 부분 this.name =name; 받고 다시 getName을 받고 하면서 무한 반복이 진행되는 것을 알게 되었습니다.
'TIL > Java' 카테고리의 다른 글
| <2025.03.12> ENUM, 동등성과 동일성 (0) | 2025.03.12 |
|---|---|
| <2025.03.11> 키오스크 과제 Lv 3 (0) | 2025.03.11 |
| <2025.03.07> 키오스트 과제 Lv1 (0) | 2025.03.07 |
| <2025.03.06>Java 챕터 [3-1] ~[3~3] (0) | 2025.03.06 |
| <2025.03.05> 계산기 과제 Lv.2 (0) | 2025.03.05 |