1. Kiosk 프로젝트 Git
1. Kiosk 프로젝트 TIL_1
2. Kiosk 프로젝트 TIL_2
3. Kiosk 프로젝트 TIL_3
4. Kiosk 프로젝트 TIL_4
5. Kiosk 프로젝트 TIL_5
Kiosk 프로젝트를 진행하며 생긴 트러블 슈팅을 모아 작성하였다. Lv1 ~ Lv4까지는 막힘 없이 구현 하였으나, Lv5와 추가 기능 구현에서 많은 문제를 맞이하였다.
아래의 내용은 막혔던 문제와 그 해결방법을 간략히 정리 한 내용이다.
트러블 슈팅
1. FileNotFoundException
- 사용자 데이터 파일 저장 문제
1. 문제 발생
UserData.saveUserData()
실행 시FileNotFoundException
발생- 원인: 파일 대신 폴더가 생성됨 → 파일을 찾을 수 없음
loadUserData()
에서 신규 사용자를 생성하는 로직이 올바르게 작동하지 않음private static final String UserName = "Userdata/"; File dir = new File(UserName); if (!dir.exists()) { dir.mkdir(); // 폴더가 아니라 파일로 잘못 인식됨 }
2. 해결
- 폴더
(Userdata/)
와 파일(Userdata/userId.properties)
을 분리하여 처리 mkdir()
을 폴더에만 적용 → 폴더와 파일의 구분 오류 해결
2. 장바구니에서 동일한 메뉴 삭제 시 모든 개수가 삭제됨
1. 문제 발생
- 장바구니에서 특정 메뉴를 삭제할 때, 동일한 메뉴가 모두 삭제됨
- 원인: filter()를 이용한 스트림 연산이 동일한 항목을 모두 걸러냄
String removedItem = cart.get(index -1).getName(); cart = cart.stream() .filter(item -> !item.getName().equals(removedItem)) // ❌ 동일한 모든 메뉴 삭제 .collect(Collectors.toList());
2. 해결
- 삭제할 메뉴를 1개씩만 제거하도록
AtomicInteger
활용 count.getAndDecrement() > 0
조건을 추가하여 한 번만 삭제하도록 제한
3. 장바구니 목록 조회 시 같은 제품 번호가 중복 표시됨
1. 문제 발생
forEach()
를 사용하여 메뉴 번호를 표시할 때, 중복된 번호가 나타남- 원인:
cart.indexOf(item)
을 사용하여 동일한 메뉴일 경우 항상 같은 인덱스를 반환cart.stream() .map(item -> (cart.indexOf(item) + 1) + "." + item.getName() + " | W " + item.getPrice()) .forEach(System.out::println);
2. 해결
AtomicInteger
를 사용하여 올바른 순번 유지- 리스트 내 위치(indexOf)가 아닌, 반복문을 통해 직접 번호 증가
4. 결제 시 잔액 부족 체크 위치 오류
1. 문제 발생
- 잔액을 체크해야 하지만, 할인 적용 후에 체크되지 않음
- 원인: 할인 적용 후 포인트 사용 처리 전에 잔액을 확인해야 함
2. 해결
- 할인 적용 후 최종 결제 금액(pointDiscountPrice)과 비교
- 잔액 부족 체크 위치를 올바르게 수정
'Project' 카테고리의 다른 글
[Project]Kiosk_Feedback (0) | 2025.05.14 |
---|---|
[Project]Calculator_Readme (0) | 2025.05.13 |
[Project]Calculator_Bug Fix & Enhc (0) | 2025.05.13 |
[Project]Calculator_5 (0) | 2025.05.13 |
[Project]Calculator_4 (0) | 2025.05.13 |