- 자판기의 보유 금액 입력받기
- Coin으로 나누어 떨어져야 한다. 즉, 10원 단위로 나누어 떨어진다.
- 0원도 가능하다 (잔돈 반환 불가능 시, 자판기에 남는다.)
- 0원 미만은 불가능 하다.
- 투입 금액 받기
[콜라,1500,20];[사이다,1000,10]- 상품명 입력받기
- 가격 입력받기
- 최소 상품 판매 금액은 100원 이상이다.
- 10원으로 나누어떨어져야 한다.
- 수량 입력받기
- 최소 1개 이상이다.
- 자판이가 보유하고 있는 금액에서 동전을 무작위로 생성하기
- 자판기가 보유한 동전을 출력한다.
- 잔돈 돌려주기
- 동전의 개수를 최소한으로 잔돈 돌려주기
- 지폐 단위는 사용 불가하다.
- 잔액 중 동전만 사용해 반환 불가능 시에 남은 금액은 자판기에 남는다.
- 상품을 구매하기
-
구매할 상품명이 자판기에 존재하는지 검사한다. - 현재 금액으로 구매가 가능한지 검사한다.
- 상품을 구매하여 최초 투입 금액에서 차감한다.
- 더이상 구매가 불가능한 경우(남은 금액이 상품의 최저 가격보다 적음, 모든 상품이 소진됨.) 잔돈을 반환한다
-
Coin 클래스를 활용해 구현해야 한다. 필드(인스턴스 변수)인 amount의 접근 제어자 private을 변경할 수 없다.
IllegalArgumentException를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 해당 부분부터 다시 입력을 받는다
Randoms, Console API를 사용한다.
✅ indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다. ✅ 3항 연산자를 쓰지 않는다. ✅ 함수(또는 메소드)의 길이가 15라인을 넘어가지 않도록 구현한다. ✅ 함수(또는 메소드)가 한 가지 일만 잘 하도록 구현한다. ✅ else 예약어를 쓰지 않는다.