본문 바로가기

개발자노트

컬렉션 프레임워크 [ArrayList] + 제네릭 클래스예제 (자판기)

package class01;

import java.util.ArrayList;
import java.util.Scanner;

class Drank{
	String name;
	int price;
	int cnt;
	
	void use() {
		if(!this.check()) { // 만약 this.check 가 아니라면! < 그러면 유효성 체크를 했겠구나! 싶음
							// if else 보다 효율 좋음
			System.out.println(this.name + " 재고 없음!");
			return; // return 으로 종료시킨다.
		}
		this.cnt--;
		System.out.println(this.name+" 구매완료!");
		
	}
	boolean check() { // 재고 체크 변수
		if(this.cnt>0) {
			return true;
		} 
		return false;
	}
	
	Drank(String name, int price){
		this(name,price,0);
	}
	Drank(String name,int price,int cnt){
		this.name=name;
		this.price=price;
		this.cnt=cnt;
	
	}
	@Override
	public String toString() {
		return "Drank [name=" + this.name + ", price=" + this.price + ", cnt=" + this.cnt + "]";
	}
	
}

public class Test04_answer {

	public static void main(String[] args) {


		ArrayList<Drank> data = new ArrayList<Drank>();
		data.add(new Drank("콜라",900,10));
		data.add(new Drank("사이다",800));
	    data.add(new Drank("웰치스",1200,2));
	    System.out.println(data);

	    Scanner sc=new Scanner(System.in);
	    while(true) {
	    	System.out.println("1.메뉴출력 2.메뉴입력 3.종료");
	    	int act=sc.nextInt();
	    	
	    	if(act==1) {
	    		for(int i=0;i<data.size();i++) {
	    			System.out.println((i+1)+"번 메뉴: "+data.get(i));
	    		}
	    	}
	    	else if(act==2) {
	    		int menu;
	    		while(true) {
	    		System.out.println("메뉴 입력");
	    		menu=sc.nextInt();
	    		if(0<menu && menu<=data.size()) {
	    			break;
	    		}
	    		System.out.println("없는 메뉴번호입니다! 확인 후 재 입력 해주세요.");
	    	}
	    		data.get(menu-1).use();
	    	}
	    	else if(act==3) {
	    		System.out.println("프로그램 종료...");
	    		break;
	    	}
	    	else {
	    		System.out.println(" 잘못된 입력입니다. ");
	    	}
	    }
		
		

	}

}