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

TIL) If문, 넌 내꺼야 (੭ꐦ •̀Д•́ )੭* ᑦᵒᔿᵉ ᵒᐢᵎᵎ

by Won's log 2023. 6. 9.

드디어 2번째 팀과제를 마쳤다. 결론부터 말하자면 내가 구현한 기능은 발전과 스스로에 대한 고민이 매우 필요한 코드였으므로 앞으로 더 열심히 해야겠다는 생각이 많이 들었다.

 

오늘 TIL은 아주아주 간단한 if문 사용법을 풀어쓴 경험담이다.

문제: 코드를 병합하는 과정에서 기존에 내가 만든 주문 현황보다는 다른 팀원이 대기주문목록, 완료주문목록(주문 건 별로 리스트를 add 하는 arraylist메서드)에 사용한 코드를 긁어오는 것이 소비자 입장에서 보았을 때 편리할 것이라 판단되었다. 그래서 코드를 수정하는 과정이었고 주문완료된 목록, 대기 중인 목록을 순차적으로 보이도록 해야 했다. 이때, if문을 활용하여 주문완료되지 않거나 대기중인 목록이 없으면 완료되지 않았다 / 목록이 없다는 문구를 띄어야 했다.

 

[대기주문목록, 완료주문목록에 사용한 코드 - 긁어온 코드]

 System.out.println("[ 최근에 완료된 주문목록 ]");

        for (Order o : manageList) {
            // 완료 x 주문만 골라 출력
            if (!o.finished) {
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket());
                System.out.println("-- total : W " + o.totalPrice());
                System.out.println("-- 요청사항 : " + o.getRequest());
                System.out.println("-- 주문 일시 : " + o.orderedTime);
            }
         
        System.out.println();
        System.out.println("-------------------------");
        System.out.println("[ 대기 중인 주문 목록 ]");

         for (Order o : manageList) {
            if (o.finished) {
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket());
                System.out.println("-- total : W " + o.totalPrice());
                System.out.println("-- 요청사항 : " + o.getRequest());
                System.out.println("-- 주문 일시 : " + o.orderedTime);
                System.out.println("-- 완료 일시 : " + o.finishedTime);
            }
        }

        System.out.println("메인 메뉴로 돌아갑니다.");
        showMainMenu();
    }

시도: if문을 넣어서 결과값을 보기 시작함

 System.out.println("[ 최근에 완료된 주문목록 ]");

	int i = 0;
        for (Order o : manageList) {
            // 완료 x 주문만 골라 출력
            if (!o.finished) {
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket()); 
                System.out.println("-- 주문 일시 : " + o.orderedTime);
            }
            if (i==0){System.out.println("주문완료된 목록이 없습니다.");}
         
        System.out.println();
        System.out.println("-------------------------");
        System.out.println("[ 대기 중인 주문 목록 ]");

 		 int i = 0;
         for (Order o : manageList) {
            if (o.finished) {
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket());
                System.out.println("-- 주문 일시 : " + o.orderedTime);
                System.out.println("-- 완료 일시 : " + o.finishedTime);
            }
            if (i==0){System.out.println("대기 중인 목록이 없습니다.");}
        }

        System.out.println("메인 메뉴로 돌아갑니다.");
        showMainMenu();
    }

이런 식으로 if문을 활용하여 두 타입(완료된 주문 / 완료되지 않은 주문 등)으로 나누어보았고 결과값은 대기 중인 주문 목록에 완료된 주문 목록이 확인되었고 완료된 주문목록에는 대기 중인 목록이 확인되어 있었다.

*이건 내가 두 함수를 바꿔써서 넣었으므로 바로 수정하였다!

*대기 중인 주문 목록쪽에 int i = 0은 심지어 orderStatus(){}에서 이미 사용되었기 때문에 오류로 떠서 i = 0으로 바꿔서 썼다.

=뒤죽박죽 코드가 되어 버렸다.

해결: 그리고 최근 완료된 3개를 도출하기 위해(i<3)를 추가하였다.

 System.out.println("[ 최근에 완료된 주문목록 ]");

        int i = 0;
        for(Order o : manageList){
            if(o.finished){
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket());
                System.out.println("-- 주문 일시 : " + o.orderedTime);
                System.out.println("-- 완료 일시 : " + o.finishedTime);
                i++;
            }
            if(i>2){
                break;
            }
        }
        if(i==0){
            System.out.print("주문 완료된 상품이 없습니다.");
        }

        System.out.println();
        System.out.println("-------------------------");
        System.out.println("[ 대기 중인 주문 목록 ]");

        i=0;
        for(Order o : manageList){
            if(!o.finished){
                System.out.println("=============================================");
                System.out.println("-- 주문 번호 : " + o.getOrderNumber() + " --");
                printListData(o.getBasket());
                System.out.println("-- 주문 일시 : " + o.orderedTime);
                i++;
            }
            if(i>2){
                break;
            }
        }
        if(i==0){
            System.out.print("대기 중인 상품이 없습니다.");
        }

        System.out.println("메인 메뉴로 돌아갑니다.");
        showMainMenu();
    }

새 앎: 이제 대략적으로 if문을 어떻게 사용하는지 감이 잡히는 것 같다. 그럼에도 아직 if를 사용해서 최신순으로 데이터를 뽑는 것은 어려운 것 같다. 응용된 버전을 더 공부하고 익숙하게 만들어야겠다.