Project

[Project]Kiosk

높하늬바람 2025. 5. 14. 09:51

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