음료 자판기 프로그램 만들기

coldrice99·2024년 8월 9일
0

자바로 간단한 음료 자판기 프로그램 만들기

이번 포스팅에서는 자바를 이용해 간단한 음료 자판기 프로그램을 만들어보려고 한다. 이 프로그램은 사용자가 음료를 선택하고 금액을 입력하면, 음료를 구매하고 남은 잔액을 계산해주는 기능을 제공한다.

특히 이 프로그램을 작성하면서 자바의 Map 자료형을 활용해 데이터를 관리하는 방법에 대해 배웠다. Map은 자바에서 데이터를 키(key)와 값(value) 쌍으로 저장할 수 있는 매우 유용한 자료구조이다. 이번 포스팅에서는 Map의 기본 개념과 활용 방법을 중심으로 설명해보겠다.

1. 프로그램 개요

우선, 프로그램의 기본적인 흐름을 살펴보자.

  1. 자판기에서 판매하는 음료와 그 가격을 사용자에게 보여준다.
  2. 사용자가 음료를 선택한다.
  3. 사용자가 지불할 금액을 입력한다.
  4. 사용자가 입력한 금액이 선택한 음료의 가격보다 많으면 음료를 구매하고 잔액을 표시한다.
  5. 입력한 금액이 부족하면 구매할 수 없다는 메시지를 표시하고 프로그램을 종료한다.

2. Map을 이용한 음료와 가격 관리

이 프로그램에서 가장 중요한 부분은 음료 이름과 가격을 저장하고 관리하는 것이다. 이때 Map 자료형을 사용했다. Map은 키와 값의 쌍으로 데이터를 저장하는 자료구조로, 여기서 키는 음료의 이름, 값은 음료의 가격이다.

Map<String, Integer> beverages = Map.of(
    "사이다", 1700,
    "콜라", 1900,
    "식혜", 2500,
    "솔의눈", 3000
);

위 코드에서 Map.of() 메소드를 사용해 음료와 그 가격을 Map에 저장했다. Map.of()는 Java 9에서 도입된 메소드로, 불변(immutable) Map을 빠르게 생성할 수 있게 해준다. 각각의 음료 이름(키)과 가격(값)을 쌍으로 지정해 줌으로써, 이후 코드에서 간편하게 음료의 가격을 조회할 수 있다.

3. Map의 주요 메소드 활용

프로그램이 진행되는 동안, Map의 몇 가지 주요 메소드를 활용하게 된다. 예를 들어, 사용자가 선택한 음료가 Map에 있는지 확인하기 위해 containsKey() 메소드를 사용할 수 있다. 이 메소드는 특정 키가 Map에 존재하는지 여부를 알려주기 때문에, 데이터 검증에 매우 유용하다.

if (!beverages.containsKey(userChoice)) {
    System.out.println("목록에 없는 음료입니다. 프로그램을 종료합니다.");
    return;
}

이 코드에서는 사용자가 선택한 음료가 Map에 존재하지 않으면, 프로그램을 종료하는 로직을 구현했다.

또한, 사용자가 선택한 음료의 가격을 조회하기 위해 get() 메소드를 사용한다. 예를 들어, 사용자가 "콜라"를 선택했다면, beverages.get("콜라")을 통해 해당 음료의 가격을 가져올 수 있다:

int beveragePrice = beverages.get(userChoice);

이처럼 Map을 활용하면 데이터를 효율적으로 관리하고, 필요한 정보를 빠르게 조회할 수 있다.

4. 프로그램 전체 코드

이제 전체 코드를 살펴보자.

import java.util.Map;
import java.util.Scanner;

public class BeverageVendingMachine {

    public static void main(String[] args) {
        // 음료 목록과 가격을 Map에 저장
        Map<String, Integer> beverages = Map.of(
                "사이다", 1700,
                "콜라", 1900,
                "식혜", 2500,
                "솔의눈", 3000
        );

        // 음료 목록 출력
        System.out.println("음료 목록:");
        for (Map.Entry<String, Integer> beverage : beverages.entrySet()) {
            System.out.println(beverage.getKey() + " - " + beverage.getValue() + "원");
        }

        // 사용자 입력 받기
        Scanner scanner = new Scanner(System.in);

        // 음료 선택
        System.out.print("어떤 음료를 선택하시겠습니까? ");
        String userChoice = scanner.nextLine();

        // 선택한 음료가 목록에 있는지 확인
        if (!beverages.containsKey(userChoice)) {
            System.out.println("목록에 없는 음료입니다. 프로그램을 종료합니다.");
            return;
        }

        // 금액 입력 받기
        System.out.print("얼마를 지불하시겠습니까? ");
        int coin = scanner.nextInt();

        // 선택한 음료의 가격 확인
        int beveragePrice = beverages.get(userChoice);

        // 금액이 충분한지 확인
        if (coin < beveragePrice) {
            System.out.println("돈이 부족합니다. 프로그램을 종료합니다.");
        } else {
            // 잔액 계산 및 출력
            int remain = coin - beveragePrice;
            System.out.println(userChoice + "를 구매하셨습니다.");
            System.out.println("잔액: " + remain + "원");
        }
        
        // 자원 해제
        scanner.close();
    }
}

5. Map의 이점

Map을 사용하면 다음과 같은 이점이 있다:

  • 빠른 조회 속도: Map은 키를 사용해 값을 조회하므로, 매우 빠르게 데이터를 검색할 수 있다.
  • 유연한 데이터 관리: 키-값 쌍으로 데이터를 관리할 수 있어, 특정 데이터를 쉽게 추가, 수정, 삭제할 수 있다.
  • 데이터의 명확한 구조화: 관련된 데이터를 그룹화해 관리할 수 있으며, 각 키는 고유하기 때문에 데이터의 무결성을 유지할 수 있다.

6. 결론

이번 포스팅에서는 자바의 Map을 활용해 간단한 음료 자판기 프로그램을 만들어보았다. Map을 통해 데이터를 효율적으로 관리하고 조회하는 방법을 익힐 수 있었다.

profile
서두르지 않으나 쉬지 않고

0개의 댓글