import java.util.HashMap;
public class VendingMachine {
private final HashMap<String, Integer> items;
public VendingMachine(){
this.items = new HashMap<String, Integer>();
}
public void addItem(String name, Integer price){
this.items.put(name, price);
}
public boolean checkItem(String name){
return items.containsKey(name);
}
public boolean checkMoney(String name, Integer money){
int price = this.items.get(name);
return money >= price;
}
public Integer counting(String name, Integer money){
int price = this.items.get(name);
return money - price;
}
public void showItems(){
for (String name : items.keySet()) {
Integer price = items.get(name);
System.out.println(name + " " + price + "원");
}
}
}
문제에서 요구하는 기능들을 넣어줬다.
추후 아이템이 추가 될 가능성도 고려하여 add메서드도 만들었다
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
VendingMachine machine = new VendingMachine();
machine.addItem("사이다", 1700);
machine.addItem("콜라",1900);
machine.addItem("식혜", 2500);
machine.addItem("솔의눈", 3000);
while (true){
int money;
String choice;
machine.showItems();
System.out.println("---------------");
System.out.print("음료를 선택해주세요 : "); choice=sc.next();
if(!machine.checkItem(choice)){
System.out.println("없는 음료입니다.");
break;
}
System.out.print("돈을 넣어 주세요 : "); money=sc.nextInt();
if(!machine.checkMoney(choice, money)){
System.out.println("돈이 부족합니다.");
break;
}
System.out.println(machine.counting(choice, money)+"원");
break;
}
}
}
고민했던 점은 프로그램을 종료해야 되는 시점에서 어떻게 종료를 시켜야 하는지 고민이었다.
결국 생각한 것이 전체 코드를 while로 감싸서 끝내야 되는 시점에 break를 사용하여 끝내는 것으로 결정했다.