1. 개요
JAVA에 익숙해지기 위한 두 번째 과제 Kiosk 만들기~
지금부터 Kiosk Code를 작성하면서 생겼던 문제들과 느낀점을 적어보려고 합니다.
2. 과정
● Code 작성 과정을 전부 남기기 위하여 이번에도 저번과 동일하게 크게 4단계로 구성해보았습니다.
◎ Lv1 : 기본적인 키오스크를 프로그래밍해보자
○ 간단하게 반복문과 Switch 문을 사용하여 피자 메뉴를 띄우고 선택까지 Code 작성
◎ Lv2 : 객체 지향 설계를 적용해 피자, 사이드 메뉴를 클래스로 관리하기
○ MenuItem Class를 만들어 제품의 이름, 가격, 설명에 대한 필드를 갖기
○ Main에서 MenuItem에 대한 객체를 생성하여 관리
◎ Lv3 : 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기
○ Main Code는 Kiosk로~ Start 함수를 불러 간략하게 표현
◎ Lv4 : 객체 지향 설계를 적용해 음식 메뉴와 주문 내역을 클래스 기반으로 관리하기
○ Menu Class 생성 - Category와 MenuItem 관리는 Menu에서 진행
3. Trouble Shooting
● Code 순서
◎ 원인 : Lv1 ~ Lv4 까지 진행하면서 중간에 새로운 객체를 생성하는 과정에서 오류
List<MenuItem> lv4PizzaList = new ArrayList<>();
lv4PizzaList.add(new MenuItem("베이컨 포테이토", 21500, "포테이토 큐브!"));
lv4PizzaList.add(new MenuItem("갈릭버터 쉬림프", 21900, "고소한 풍미가 가득!"));
lv4PizzaList.add(new MenuItem("치즈 킹\t\t", 21900, "치즈 끝판왕"));
Menu lv4PizzaCategory = new Menu("피자",lv4PizzaList);
◎ 결과 : Code 위치도 제 위치에 작성해야 작동합니다.
● InputMismatchException
◎ 원인1 : 메뉴의 번호를 입력할 때 실수로 인한 영어 입력!
try {
// 🛒 메뉴 선택 안내
System.out.print("👉 선택하실 메뉴의 번호를 입력해주세요: ");
int lv4selectNumber = lv4scanner.nextInt();
switch (lv4selectNumber) {
case 0:
System.out.println("🛑 프로그램을 종료합니다.");
return;
case 1:
showMenu(lv4Menu.get(lv4selectNumber - 1));
break;
case 2:
showMenu(lv4Menu.get(lv4selectNumber - 1));
break;
default:
System.out.println("⚠️ 올바른 번호를 입력해주세요.");
continue;
}
}
catch(InputMismatchException e){
System.out.println("숫자를 입력해주세요 :");
lv4scanner.nextInt();
break;
}
◎ 원인2 : try - catch 문 사용 미숙
int lv4selectNumber;
// 🛒 메뉴 선택 안내
while (true) {
try {
System.out.print("👉 선택하실 메뉴의 번호를 입력해주세요: ");
lv4selectNumber = lv4scanner.nextInt();
break;
} catch (InputMismatchException e) {
System.out.println("❌ 오류: 숫자를 입력해주세요!"); // 에러 메시지 출력
lv4scanner.nextLine(); // 버퍼에 남아 있는 잘못된 입력 제거
}
}
if (lv4selectNumber == 0) {
System.out.println("🖥️ 프로그램을 종료합니다.");
break;
} else if (lv4selectNumber > 0 && lv4selectNumber <= lv4Menu.size()) {
showMenu(lv4Menu.get(lv4selectNumber - 1));
break;
} else {
System.out.println("⚠️올바른 번호를 입력해주세요 :");
continue;
}
◎ 결과 : 입력란에 반복문을 사용하면서 try - catch 문 Code 작성. 잘못된 입력이 되었을 때 반복문을 통해 재입력
● 뒤로 가기 동작 오류
while(true) {
System.out.println("주문하실 메뉴의 번호를 입력해주세요.:");
int lv4selectItem = lv4scanner.nextInt();
if (lv4selectItem > 0 && lv4selectItem <= lv4Item.size()) {
System.out.println("주문하신 메뉴는 " + lv4Item.get(lv4selectItem - 1).getLv4Item() + " 입니다.\n");
break;
} else if (lv4selectItem == 0) {
break;
} else {
System.out.println("⚠️ 잘못된 번호입니다. 다시 입력해주세요.");
}
}
◎ 원인 : Switch - Case 문을 사용하면서는 break; return; , while 문에서 break; return을 제대로 파악 못함
} else if (lv4selectNumber > 0 && lv4selectNumber <= lv4Menu.size()) {
showMenu(lv4Menu.get(lv4selectNumber - 1));
◎ 결과: break; 제거 하여 원하는 동작 확인.
4. 마무리
해당 과제를 진행하면서 아직 기본이 많이 부족하다는 것을 깨닫게 되었습니다.
반복문 ( For, While ) , 조건문 ( If, Switch ), 예외 처리 등 아직은 지식이 많이 부족하다는 것을 느끼게 되었고, 더욱 더 여러 코드를 작성해보면서 빠른 적응, 다양한 활용을 해봐야겠다고 느끼게 되었습니다.
'Sparta > Task' 카테고리의 다른 글
Spring 심화 주차 개인 과제 (0) | 2025.04.18 |
---|---|
일정( Calendar_CRUD ) Trouble Shooting (0) | 2025.04.04 |
일정( Schedule_CRUD ) Trouble Shooting (0) | 2025.03.26 |
계산기 ( Calculator ) - TroubleShooting (0) | 2025.03.05 |
Mini Project (0) | 2025.03.03 |