it 공부/Java

Scanner 클래스 카페 만들기 실습 - (2)

blancfleur 2021. 8. 18. 22:45

<카페만들기>
 음료의 종류
 1. 아메리카노(3000) 2. 카페라테(3500) 3. 카페 모카(4000) 4. 과일주스(5000)
 입력값 : 메뉴 번호, 주문 수량, 지불금액(고객이 지불한 금액) 
 출력값 : 지불금액, 판매금액(단가 * 수량), 잔액(지불금액 - 판매금액)
 
 <메뉴>
 while() { 
  1. 아메리카노(3000) 2. 카페라테(3500) 3. 카페 모카(4000) 4. 과일주스(5000)
 메뉴를 선택하세요. (1~4 번까지) : 
 주문 수량 : 3
 >지불금액 : 1000
 ============================
 지불금액 : 10000
 판매금액 : 9000
 잔액 : 1000


private void menu() {

		while (true) {
			System.out.print("메뉴를 골라주세요.");
			System.out.println("1. 아메리카노(3000) 2. 카페라테(3500) 3. 카페 모카(4000) 4. 과일주스(5000) 0. 종료");
			System.out.print(">>");
			int userChoice = scan.nextInt();

			if (userChoice == 1) {
				cntCount();
				totMoney = ea * AMERICANO;
				count();
				income += totMoney;

			} else if (userChoice == 2) {
				cntCount();
				totMoney = ea * CAFFELATTE;
				count();
				income += totMoney;

			} else if (userChoice == 3) {
				cntCount();
				totMoney = ea * CAFFEMOCHA;
				count();
				income += totMoney;

			} else if (userChoice == 4) {
				cntCount();
				totMoney = ea * JUICE;
				count();
				income += totMoney;

			} else if (userChoice == 0) {
				System.out.println("운영이 끝났습니다. ");

			}

		}
	}

	private int cntCount() {
		System.out.println("수량을 입력하세요.");
		ea = scan.nextInt();
		return ea;

	}

	private int count() {
		System.out.println("총 지불금액은 " + totMoney + "입니다.");
		System.out.println("지불할 금액을 입력하세요.");
		inMoney = scan.nextInt();

		if (inMoney >= totMoney) {
			change = inMoney - totMoney;

		} else {
			while (inMoney < totMoney) {
				int m = totMoney - inMoney;
				System.out.println("금액이 부족합니다 " + m + "원을 추가해주세요");
				System.out.print(">> ");
				inMoney += scan.nextInt();
			}

		}

		System.out.println("잔돈은 " + change + " 입니다");

		return change;

	}

  위는 내가 예제를 풀면서 만든 코드고, 아래의 강사님과 같이 푼 코드이다. 아래의 코드에는 메소드 안에 코드가 촘촘히 들어가 있는 것과 비교가 된다. 특히 computeMoney () 메소드를 넣어서 판매액 계산을 하면서 사용자가 입력한 메뉴를 다시 한 번 보여주고 수령까지 확인을 시킨 부분에서 사용자를 배려하는 코드로 읽어졌다.  코드가 중복되지 않고 간결하게 사용하는 것도 중요하지만 사용자에 맞게 코드를 짜는 것도 중요하다는 생각이 들었다. 

  이 예제를 실습하면서 카페 메뉴 출력을 한번만 시키고 끝내도록 이프문을 짰는데 강사님이 이러면 이 카페는 한번만 팔고 적자라는 이야기를 하셔서 조금 웃겼다. 카페 메뉴 출력은 사용자가 원할 때까지 나오도록 해야 카페(장사)라는 특성에 맞다.