자바 자판기 예제

rxmichael/자동 판매기에서 새로운 릴리스에 대한 알림을 원하십니까? 나는 내 작업 목적을 위해 지난 달부터이 자바를 배웠습니다. 나는이 운동을하고 싶었다. 이것은 자동 판매기 프로그램입니다. 나는 그것을 잘못된 방법으로 쓰면 하지 않는다. 그래서 내 코드에서 나에게 보여줄 누군가가 필요합니다. 나는 코드의 어딘가에 잘못이 있어야한다는 것을 알고 있다. 누군가가 나를 도와 주세요 수 있습니다. 당신의 getChange() 방법은 잘 작동하지 않습니다, 당신은 재고가 동전을 가지고 있는지 확인하고 재고에 각 동전의 수량에 대해 걱정하지 않습니다. 나는 콜라의 가격이 21가정하자, 나는 콜라를 선택하고 쿼터를 삽입, VM 은 나에게 4 페니 반환, 나는이 경우에 NotSufficientChangeException 던져야한다, 한 번 더 할.

코드: 긴 가격 = vm.selectItemAndGetPrice (Item.COKE); System.out.println (“콜라의 가격:” + 가격); vm.insertCoin (코인.쿼터); 버킷> 버킷 = vm.collectItemAndChange(); System.out.println(“[리턴] ” + 버킷); vm.select항목앤겟프라이스(Item.COKE); vm.insertCoin (코인.쿼터); 버킷 = vm.collectItemAndChange(); System.out.println(“[리턴] ” + 버킷); ((자동 판매기임)vm).printStats(); 결과:콜라의 가격:21[반환] 첫 번째: 콜라, 페니, 페니, 페니] 첫 번째: 콜라, 두 번째: 콜라, 페니, 페니] 총 판매 : 42현재 항목 재고 : – 콜라 : 3 – 소다 : 5 – 펩시 : 5 현재 현금 재고 : – 0 – 니클 : 5 – 니클 DIME : 5 – 쿼터 : 7 @Rudraraju, 공장 패턴은 지금 기본 구현을 반환하지만 미래에 자동 판매기의 다른 유형을 반환 할 수 있습니다, 자동 판매기의 생성을 캡슐화하는 데 사용됩니다. 이 자동 판매기 프로그램은 사용자가 캔 음료를 구입할 수있는 프로그램입니다. 펩시, 콜라, 오렌지, 7up의 4 가지 유형의 음료가 있습니다. 그 목적을 위해 사용자는 동전에 대한 유효한 입력이 RM1, 50 센트, 20 센트 및 10 센트인 동전을 삽입해야합니다. 캔 음료의 가격은 각각 RM1.20입니다. 이 프로그램에 도달 할 때까지 사용자로부터 동전의 수를 읽고 사용할 수있는 음료를 마시고 사용자에게 균형을 제공 할 수있는 유형을 선택하고 사용할 수있는 동전의 수와 사용 가능한 음료를 출력합니다 사용자에게 물어. 그 후 사용자는 구매를 반복하거나 프로그램을 종료하도록 선택할 수 있습니다. import java.util.HashSet;import java.util.linked.util.Scanner;import java.util.Scanner;import java.util.Set;공공 클래스 자동 판매기 { LinkedHashMap hm = 새로운 LinkedHashMap(Double>); 스캐너 s = 새 스캐너(System.in); 개인 이중 val; 개인 문자열 키; 개인 정적 int 분기; 개인 정적 이중 달러; 공공 보이드 스낵() { HashSet sm = 새로운 해시셋(); hm.put(“Lays”, 2.0); hm.put(“비스컷”,1.25); hm.put(“Chocklate”, 1.5); sm.add(“출구”); 키 = hm.keySet(); for (문자열 s : 키) { System.out.println (s+”:”+hm.get(들)); } for(문자열 s : sm) { System.out.println(들); } System.out.print(“간식 품목 이름 입력:”); 키 = s.next(); System.out.println(“선택했습니다”+” “+키”); val = 달러 – hm.get (키); System.out.println(val); if(키 == “종료”) { 항목()); } 공공 무효 음료() { HashSet ms = 새로운 해시셋(); hm.put(“콜라”, 3.50); hm.put(“스프라이트”, 2.5); hm.put(“펩시”, 2.0); ms.add(“출구”); 키 = hm.keySet(); for (문자열 s : 키) { System.out.println (s+”:”+hm.get(들)); } for(문자열 s : ms) { System.out.println(들); } System.out.print(“음료 품목 이름 입력:”); 키 = s.next(); System.out.println(“선택했습니다”+” “+키”); val = 달러 – hm.get (키); if(키 == “종료”) { 항목()); } 공개 무효 항목() { 해시셋 hs = 새로운 해시셋();hs.add(“스낵”); hs.add(“음료”); hs.add(“출구”); for (문자열 s : hs) { System.out.println(들); } System.out.print(“옵션 입력:”); int m = s.nextInt(); 스위치 (m) { 케이스 1: 간식 (); 휴식; 경우 2: 음료 (); 휴식; 경우 3: System.out.print (“당신의 돈을 가지고 $”+달러); System.exit(0); } 경우 (val ==0){ System.out.println (“재미를 주셔서 감사합니다”); } 다른 경우 (val 0){ System.out.println (“균형 :$”+val); 반복 (} } 개인 무효() System.out.print(“다른 것을 원하십니까(Y/N):”); char c = s.next(“”)”. charAt (0); if(c == `y`){if(val<0){System.out.println("부족한 자금"); } 다른 {달러 = val;} 항목(); 반복(); })(c =n`){ System.out.println("잔액:$+val);" System.exit(0); } 공용 정적 보이드 메인(String[] args) { 자동 판매기 벤딩 = 새 자동 판매기(); System.out.println ("로켓 자동 판매기에 오신 것을 환영합니다"); System.out.print("쿼터 삽입:"); @SuppressWarnings("리소스") 스캐너 s = 새 스캐너(System.in); 자동 판매.분기 = s.nextInt(); 자판.달러 = 0.25*분기; System.out.println("$"+자판.달러를 삽입했습니다); ven.item(); }} 여기에 하나의 질문.