프로그래밍/Java
숙제 - 자판기
황금비비새
2013. 7. 8. 14:49
# Drink.java
package am; public class Drink { String name; int price; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }# VendingMashine.java
package am; import java.util.Scanner; public class VendingMashine { Drink[] dk = new Drink[4]; int coin; Scanner scan = new Scanner(System.in); StringBuffer sb = new StringBuffer(); VendingMashine(){ for (int i = 0; i < dk.length; i++) { dk[i] = new Drink(); } // 음료수 셋팅 dk[0].name = "콜라"; dk[0].price = 900; dk[1].name = "사이다"; dk[1].price = 800; dk[2].name = "커피"; dk[2].price = 700; dk[3].name = "식혜"; dk[3].price = 650; } public void insertCoin(){ System.out.print("InsertCoin: "); coin += scan.nextInt(); scan.reset(); } public void outputMenu(){ sb.append("[0.InsertCoin]"); for (int i = 0; i < dk.length; i++) { sb.append("[").append(i+1).append(".").append(dk[i].name).append("(").append(dk[i].price).append(")]"); } sb.append("[9.Refund]"); System.out.println(sb.toString()); sb.delete(0, sb.length()); System.out.printf("[잔액:%d] 선택: ", coin); } public void choiceMenu(){ boolean repeat = false; int change = 0; do{ outputMenu(); int menu = scan.nextInt(); scan.reset(); if( !(menu == 9 || menu >=0 && menu <= dk.length) ){ // 정상적인 값이 아닐때 System.out.println("다시 입력해 주세요"); continue; } switch(menu){ case 0: insertCoin(); repeat = true; break; case 9: // 반환 outputRefund(); repeat = false; break; default: // 돈이 모자랄 경우, 다른 음료수를 뽑을 수 있을 경우, 바로 반환되어야 하는경우 change = coin - dk[menu-1].price; // 돈-음료수가격 if(change < 0){ // 돈이 모자랄 경우 System.out.printf("%d원 모자랍니다\n",change); repeat = true; }else if(change >= retMinPrice()){ coin = change; System.out.printf("%s가 나왔습니다.\n", dk[menu-1].name); repeat = true; }else{ coin = change; System.out.printf("%s가 나왔습니다.\n", dk[menu-1].name); outputRefund(); repeat = false; } } }while(repeat); } // 잔돈 출력 public void outputRefund(){ System.out.printf("잔돈: %d원\n", coin); } // 돈이 모자라는지 검증 public boolean coinVerify(int menu){ // 안모자르면 true , 모자르면 false return coin - dk[menu-1].price >= 0 ? true:false; } // 다른 음료수를 뽑을 수 있는지 --> coin - minprice > 0 public int retMinPrice(){ int min = dk[0].price; for (int i = 1; i < dk.length; i++) { if(min > dk[i].price) min = dk[i].price; } return min; } public static void main(String[] args) { VendingMashine vm = new VendingMashine(); // 동전 삽입 vm.insertCoin(); vm.choiceMenu(); // 메뉴 선택 } }