Java 콘솔로 상품 구매하여 내역 출력하기

사용자가 구매한 상품을 요약 내역서를 출력하는 프로그램이다.

  • 사용자는 3가지 옵션을 제공한다. 상품 입력, 결제, 프로그램 종료 옵션은 정수로 입력 받는다
    • 상품 입력은 사용자에게 상품명과 가격, 수량을 입력받아야한다.
    • 결제 옵션은 사용자가 비용을 확인하고, 결제를 완료했다는 시나리오이다. 총 비용을 출력하고 0으로 초기화한다.
    • 프로그램 종료는 "프로그램을 종료합니다." 메시지를 출력하고 종료한다.
  • 3개의 정수가 아닌 다른 값이 오면 "올바른 옵션을 입력하세요." 출력한다.
  • 여러 개의 상품을 구매할 수 있고, 언제든지 종료할 수 있어야 한다.

입력 예시

1
김치
4300
3
1
시금치
2400
5
2
999
3

출력 예시

옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료
1
상품 이름을 알려주세요 김치
상품 가격을 알려주세요 4300
구매 수량을 알려주세요 3
상품 이름: 김치 가격: 4300원 수량: 3개 총 합계: 12900

옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료
1
상품 이름을 알려주세요 시금치
상품 가격을 알려주세요 2400
구매 수량을 알려주세요 5
상품 이름: 시금치 가격: 2400원 수량: 5개 총 합계: 12000

옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료
2
총 비용은 24900 원입니다.

옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료
999
옵션을 잘못 입력하셨습니다.

옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료
3
프로그램을 종료합니다.

Java 실전

public class Store {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int launch = 1;

        while (launch == 1) {
            String productName;
            int productPrice = 0;
            int productQuantity = 0;
            int totalPrice = 0;
            
            System.out.println("옵션. 1: 상품 입력, 2: 결제, 3. 프로그램 종료");
            int option = scanner.nextInt();
            scanner.nextLine();

            switch (option) {
                case 1: {
                    int sum;
                    System.out.print("상품 이름을 알려주세요 ");
                    productName = scanner.nextLine();

                    System.out.print("상품 가격을 알려주세요 ");
                    productPrice = scanner.nextInt();
                    scanner.nextLine();

                    System.out.print("구매 수량을 알려주세요 ");
                    productQuantity = scanner.nextInt();
                    scanner.nextLine();
                    sum = productPrice * productQuantity;

                    System.out.println(
                            "상품 이름: " + productName +
                                    " 가격: " + productPrice +
                                    "원 수량: " + productQuantity +
                                    "개 총 합계: " + sum
                    );
                    totalPrice += sum;
                    break;
                }
                case 2: {
                    System.out.println("총 비용은 " + totalPrice + " 원입니다.");
                    break;
                }
                case 3: {
                    System.out.println("프로그램을 종료합니다.");
                    launch = 0;
                    break;
                }
                default: {
                    System.out.println("옵션을 잘못 입력하셨습니다.");
                    break;
                }
            } // End switch
            System.out.println();
        } // End while
    }
}

while, switch 문을 같이 사용하니 코드 줄이 많아졌다. if 문 또는 switch 화살표 연산자로 코드 수를 줄일 수 있지 않을까 생각이 든다.