본문 바로가기
TIL (Today I Learned)

TIL) 최근 주문목록만 출력할 수 있도록 if문 사용하기

by Won's log 2023. 6. 8.

TIL 기준

1. 어떤 문제가 있었는지

2. 내가 시도해 본 것들

3. 어떻게 해결했는지

4. 뭘 새롭게 알았는지

=문시해알

오늘은 1문제에 봉착하여 이를 풀어가는 과정을 기록하였다.

 

키오스크를 업그레이드하는 팀과제를 부여받았는데 내가 맡은 업무는 소비자가 주문 현황 화면을 선택하였을 때 다음과 같은 정보를 포함하는 화면을 만드는 것이었다.

주문 현황에서는

  • 맨 위에 완료된 최근주문 3개를 출력한다.
  • 그 아래에 대기 중인 모든 주문 목록을 출력한다.

가 포함되어 있어야 했고 기존에 만들어 놓은 코드는 최근 주문과 대기 중인 주문 목록이 모두 출력 가능하였으나 최근 주문 3개를 출력하는데 어려움이 있었다. (문제)

[ 현재 상황]

 public void OrderStatus() { //주문현황
        System.out.println();
        System.out.println("[ 최근에 주문완료된 목록 ]");

            for(int i=0; i<finishedOrders.size(); i++){
                FoodMenu finished = finishedOrders.get(i);
                System.out.println(finished.getName() + "   | " + finished.getPrice() + " | " + finished.getDescription());}
        }
        System.out.println();
        System.out.println("-------------------------");
        System.out.println("[ 대기 중인 주문목록 ]");
        
            for (int i = 0; i < waitingOrders.size(); i++) {
                FoodMenu wait = waitingOrders.get(i);
                System.out.println(wait.getName() + "   | " + wait.getPrice() + " | " + wait.getDescription());
            }
        }

시도: if 문으로 ==0이라는 구문을 사용해 보았더니 주문이 완료되지 않았을 때를 확인할 수 있었다.

         여러 시도 끝에 if문과 if else -else를 시도한 끝에 주문 개수별로 항목을 세분화하여 결과를 도출할 수 있었다.

해결: if-else문으로 최근 3개 도출 성공!

새 앎: if문을 처음부터 끝까지 나의 선택으로 완성한 것은 이번이 처음인데 더 고급진 코드로 있을 것이라 생각되어 계속 공부하고 도전해야겠다.

 

그렇게 완성된 코드는 다음과 같다!

    public void OrderStatus() { //주문현황
        System.out.println();
        System.out.println("[ 최근에 주문완료된 목록 ]");

        if (finishedOrders.size()>=4) {
            System.out.println("4개 이상의 주문이 완료되었습니다.");
        } else if (finishedOrders.size()==0) {
            System.out.print("주문완료된 상품이 없습니다.");
        } else {
            for(int i=0; i<finishedOrders.size(); i++){
                FoodMenu finished = finishedOrders.get(i);
                System.out.println(finished.getName() + "   | " + finished.getPrice() + " | " + finished.getDescription());}
        }
        System.out.println();
        System.out.println("-------------------------");
        System.out.println("[ 대기 중인 주문목록 ]");
        if (waitingOrders.size()==0) {
            System.out.print("대기 중인 상품이 없습니다.");
        } else {
            for (int i = 0; i < waitingOrders.size(); i++) {
                FoodMenu wait = waitingOrders.get(i);
                System.out.println(wait.getName() + "   | " + wait.getPrice() + " | " + wait.getDescription());
            }
        } 
    }

다만, 마지막에 깨달았지만 대기 중인 주문목록이 1개일 경우, 같은 값이 반복해서 도출된다는 것을 깨달았다. For문의 한계라고 생각되는데 이에 대한 문제는 집요하게 파서 개선해야겠다.