[Java] Lv2. 스파르타 자판기

Yuri·2024년 12월 12일

Java

목록 보기
6/13

🍀 본격적으로 시작해볼까요?

문제

자바 코드를 이용해 자판기를 만들어 봅시다.

1. 사용자가 볼 수 있게 메뉴를 표시합니다.
다음과 같은 음료를 실행창에 표시합니다.

  • 사이다 1,700원
  • 콜라 1,900원
  • 식혜 2,500원
  • 솔의눈 3,000원

2. 사용자는 음료를 선택할 수 있습니다.
사용자에게 어떤 음료를 살 것인지를 입력받습니다.

  • ex) 사이다

목록에 없는 음료일 경우 실행이 종료됩니다.

3. 사용자는 지불할 금액을 입력할 수 있습니다.
사용자에게 얼마를 넣을지 입력받습니다.

  • ex) 2000

지불하는 금액이 선택한 음료의 비용보다 작다면 “돈이 부족합니다.” 를 출력합니다

4. 사용자는 음료를 구매하고 남은 잔액을 확인할 수 있습니다.
잔액을 화면에 표시합니다.

  • ex) 입력한 돈 2000원, 사이다 1700원 일때 300원을 잔액으로 보여줍니다.
import java.util.Map;
import java.util.Scanner;

public class VendingMachine {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<String, Integer> products = Map.of(
                "사이다", 1700,
                "콜라", 1900,
                "식혜", 2500,
                "솔의눈", 3000);

        // 1-1. 메뉴 표시
        System.out.println("=======[Menu]=======");
        for (Map.Entry<String, Integer> prod : products.entrySet()) {
            System.out.println(prod.getKey() + ": " + prod.getValue() + "원");
        }
        System.out.println("====================");

        // 2-1. 사용자 음료 선택
        System.out.print("살 음료를 입력해 주세요: ");
        String input = scanner.nextLine();
        // 2-2. 목록에 없는 음료일 경우 실행 종료
        if (!products.containsKey(input)) {
            System.out.println("목록에 없는 음료입니다.");
            return;
        }

        // 3-1. 지불 금액 입력
        System.out.print("지불 금액을 입력해 주세요(숫자만 입력): ");
        int pay = scanner.nextInt();
        scanner.nextLine(); // nextInt를 입력받은 후 Scanner 개행문자 제거

        int price = products.get(input); // 선택한 음료의 비용
        if (pay < price) {
            // 3-2. 지불금액 < 선택한 음료의 비용
            System.out.println("돈이 부족합니다.");
        } else {
            // 4-1. 남은 잔액 표시
            int charge = pay - price;
            System.out.println("지불한 돈: " + pay + "원, 잔액: " + charge + "원");
        }
    }
}

결과

2-2. 목록에 없는 음료일 경우, 실행 종료

3-2. 지불금액이 선택한 음료의 비용보다 작을 경우, "돈이 부족합니다" 표시

4-1. 남은 잔액 표시

profile
안녕하세요 :)

0개의 댓글