이번 포스팅에서는 자바를 이용해 간단한 음료 자판기 프로그램을 만들어보려고 한다. 이 프로그램은 사용자가 음료를 선택하고 금액을 입력하면, 음료를 구매하고 남은 잔액을 계산해주는 기능을 제공한다.
특히 이 프로그램을 작성하면서 자바의 Map 자료형을 활용해 데이터를 관리하는 방법에 대해 배웠다. Map은 자바에서 데이터를 키(key)와 값(value) 쌍으로 저장할 수 있는 매우 유용한 자료구조이다. 이번 포스팅에서는 Map의 기본 개념과 활용 방법을 중심으로 설명해보겠다.
우선, 프로그램의 기본적인 흐름을 살펴보자.
이 프로그램에서 가장 중요한 부분은 음료 이름과 가격을 저장하고 관리하는 것이다. 이때 Map 자료형을 사용했다. Map은 키와 값의 쌍으로 데이터를 저장하는 자료구조로, 여기서 키는 음료의 이름, 값은 음료의 가격이다.
Map<String, Integer> beverages = Map.of(
"사이다", 1700,
"콜라", 1900,
"식혜", 2500,
"솔의눈", 3000
);
위 코드에서 Map.of()
메소드를 사용해 음료와 그 가격을 Map에 저장했다. Map.of()
는 Java 9에서 도입된 메소드로, 불변(immutable) Map을 빠르게 생성할 수 있게 해준다. 각각의 음료 이름(키)과 가격(값)을 쌍으로 지정해 줌으로써, 이후 코드에서 간편하게 음료의 가격을 조회할 수 있다.
프로그램이 진행되는 동안, Map의 몇 가지 주요 메소드를 활용하게 된다. 예를 들어, 사용자가 선택한 음료가 Map에 있는지 확인하기 위해 containsKey()
메소드를 사용할 수 있다. 이 메소드는 특정 키가 Map에 존재하는지 여부를 알려주기 때문에, 데이터 검증에 매우 유용하다.
if (!beverages.containsKey(userChoice)) {
System.out.println("목록에 없는 음료입니다. 프로그램을 종료합니다.");
return;
}
이 코드에서는 사용자가 선택한 음료가 Map에 존재하지 않으면, 프로그램을 종료하는 로직을 구현했다.
또한, 사용자가 선택한 음료의 가격을 조회하기 위해 get()
메소드를 사용한다. 예를 들어, 사용자가 "콜라"를 선택했다면, beverages.get("콜라")
을 통해 해당 음료의 가격을 가져올 수 있다:
int beveragePrice = beverages.get(userChoice);
이처럼 Map을 활용하면 데이터를 효율적으로 관리하고, 필요한 정보를 빠르게 조회할 수 있다.
이제 전체 코드를 살펴보자.
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();
}
}
Map을 사용하면 다음과 같은 이점이 있다:
이번 포스팅에서는 자바의 Map을 활용해 간단한 음료 자판기 프로그램을 만들어보았다. Map을 통해 데이터를 효율적으로 관리하고 조회하는 방법을 익힐 수 있었다.