JAVA LV2

김국민·2025년 1월 14일

JAVA

목록 보기
2/21

문제

자바 코드를 이용해 자판기를 만들어 봅시다.
step1 사용자가 볼 수 있게 메뉴를 표시합니다.
  • 사이다 1,700원
  • 콜라 1,900원
  • 식혜 2,500원
  • 솔의눈 3,000원
step2 사용자는 음료를 선택할 수 있습니다.
  • 사용자에게 어떤 음료를 살 것인지를 입력받습니다.
    ex) 사이다
  • 목록에 없는 음료일 경우 실행이 종료됩니다.
step3 사용자는 지불할 금액을 입력할 수 있습니다.
  • 사용자에게 얼마를 넣을지 입력받습니다.
    ex) 2000
  • 지불하는 금액이 선택한 음료의 비용보다 작다면 “돈이 부족합니다.” 를 출력합니다
step4 사용자는 음료를 구매하고 남은 잔액을 확인할 수 있습니다.
  • 잔액을 화면에 표시합니다.
    ex) 입력한 돈 2000원, 사이다 1700원 일때 300원을 잔액으로 보여줍니다.

  1. 우선 VendingMachine이라는 클래스를 만들었다. 자판기 클래스이다.
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를 사용하여 끝내는 것으로 결정했다.

profile
개발지망생

0개의 댓글