Pj kiosk 단계별 작성
프로젝트하면서 새로 배운것
- containsKey : Map 컬랙션에서 키가 있는지 확인하는 함수
- Food클래스의 속성과 생성자를 만드는데 Cart cart로 속성을 만들고 생성자로 Food (Cart cart) { this.cart = cart; } 만든다 그 다음에는 kiosk 클래스에서 Cart cart = new Cart(); Food food = new Food(cart); 해서 만들어서 사용 객체 간의 의존관계를 외부에서 주입해주는 설계 패턴
예외 처리 및 문제 오류 해결
Lv 1
-
숫자를 입력받는 공간에 다른것이 들어와서 나오는 오류를 try-catch로 해결 InputMismatchException 오류가 발생했다.
-
햄버거, 음료, 디저트, 종료 에 해당하는 숫자를 입력하지 않으면 다음단계로 넘어가지 않던것을 해결
Lv 2
-
전에 출력했던 기록이 계속 남아서 출력되는 문제
해결 : List의 구조 파악이 안된 결과였음 (List는 누적구조) 그래서 출력까지 다하면 마지막 부분에 .clear() 로 초기화하는 방식으로 해결
-
숫자를 입력해서 한번 실행한뒤에 다시 실행하려고 할때 문자를 입력하면 무한루프에 빠짐
해결 : return 해버리면 프로그램 종료로 해결 (처음 시작할때도 문자받으면 프로그램 종료 됨)
Lv4
-
음식선택하는 부분에서 리스트에 값이 들어있지 않다는 오류를 발견
해결 : 재실행결과 했던 오류를 해결하기 위해 사용했던 코드로 인해서 리스트가 비워지는 상황이 발생 그래서 음식별 리스트를 한곳에 모여 있던것을 음식별 클래스를 따로 나누는 걸로 해결
버그 원인 찾음
반복문은 if문을 만나서 결과를 출력을 했다해서 for문은 끝까지 반복을 함 근데 이때 3번을 선택을 했을때는 3번에 해당하는것을 출력을 하고 나서 다음 4번째 for문을 도는데 이때 내가 입력한 값이랑은 다르니까 if문은 실행이 되지 않고 else if문 실행이 됨 이때 이거는 해당이 되니까 초기화가 된거임 근데 i가 4번일때는 j는 3번으로 반복문의 끝이 되었는데 이때 if문은 충족이 되고 나서 출력이되고 list.clear()가 들어가있는 else if문은 실행이 안된거임 그래서 다른 음식과 겹쳐서 나오게 된거임...
-
메모리 누수 해결을 위해서 반복문 밖으로 인스턴스화한거를 빼냈더니 메뉴선택을 하면 모든 메뉴가 다 나와버리는 버그가 있었다. 그래서 원하는 메뉴를 누르면 그 메뉴에 맞는 음식만 나오도록 조건문을 줘서 해결을 했다. 그런데 음식을 선택을 할때 아직 메뉴는 4개밖에 없어서 5번을 누르면 장바구니에 담기면 안되는건데 음식들이 한 리스트에 담겨있다보니 메뉴에 안보이는 번호를 눌러도 장바구니에 담기는 버그?가 있다. (1번부터12번까지는 음식이 담김)
-
결제를 할때 0원이 나오는 버그 수정 Food 클래스랑 kiosk 클래스에서 각각의 cart를 인스턴스화해서 일어난 이슈
-
처음 결제까지 완료하고 나서 두번째 장바구니를 담으려고 하니까 nullpointexp~~뭐시기가 뜸 cartItems는 초기화를 해줬는데 countDuplication을 초기화를 해주지 않아서 일어난 이슈