TIL)23.07.11(정예반 과제)

주민·2023년 7월 11일
0

TIL

목록 보기
36/84

문제

수업을 진행하면서 한 코드에 추가 기능을 구현 하는 것으로 놀숲 카페를 운영하는 코드이다.

  • 추가 기능
    - 주문화면을 보여준다.
    • 하루에 주문은 12건까지만 받는다.
    • 주문 화면에서 비밀번호를 치면 관리자 모드로 넘어갈 수 있다.

기존 코드에 주문화면 구현하고 연결, 관리자 모드로 연결까지는 진행했는데 받은 주문이 12건이 되거나 주문을 처리했을 때 종료하는 부분이 잘 되지 않았다.

* Scanner로 입력한 정보에 따라 mainMenu에서 다음으로 이동하도록 짰기 때문에 다른 메서드는 호출하지 않음
while (screen.size < 12 || screen.getChoose() == 99)){
    screen.mainMenu();
}
System.out.println("오늘 영업이 종료되었습니다.");

문제해결

  1. 우선 주문 건수가 12개가 되거나 주문처리시 종료되는 부분은 while에 건수 조건 하나만 쓰고 break를 써서 빠져 나오는 방법으로 해결하였다.
while (screen.size < 12 ){
    screen.mainMenu();
    if(screen.getChoose() == 99)
        break;
}
System.out.println("오늘 영업이 종료되었습니다.");
  1. 1번에 방법으로 반복이 종료되면 12개를 받고 처리를 하지 못한채로 종료가 되어버린다. 뒤에 관리자 메뉴를 한번 더 추가하자니 주문 처리를 이미 한 경우도 있기 때문에 주문만 받은 상황에 정산을 진행할 수 있도록 if문을 추가했다.
if(screen.getChoose() != 99){
    System.out.println("99.관리자 메뉴");

    int choose = sc.nextInt();
    if(choose == 99){
        screen.admin();
    }
}

알게된 점

문제에서 주문을 12개를 받거나 관리자 모드를 선택(= 주문처리)을 하는 경우을 생각하여 "screen.size < 12 || screen.getChoose() == 99" 을 했는데

|| &&을 조건으로 쓰면 true, false 하나를 반환하기 때문에 관리자모드 선택시 종료가 안되는 것이었다.

  • 중간에 관리자 모드로 탈출 테스트
    screen.size < 12 => true
    screen.getChoose() == 99 => true
    이기 때문에 12건이 되기 전까지 계속 돌아간다.

논리 연산자

&&(and)
- 모두가 true인 경우에 true를 반환
- 하나라도 false가 있는 경우 false를 반환
||(or)
- 하나라도 true가 있는 경우 true를 반환
- 모두가 false인 경우에 false를 반환

0개의 댓글

관련 채용 정보