이번 포스팅에서는 자바를 이용해 간단한 음료 자판기 프로그램을 만들어보려고 한다. 이 프로그램은 사용자가 음료를 선택하고 금액을 입력하면, 음료를 구매하고 남은 잔액을 계산해주는 기능을 제공한다.
특히 이 프로그램을 작성하면서 자바의 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을 통해 데이터를 효율적으로 관리하고 조회하는 방법을 익힐 수 있었다.