package ch07.ex14;
class Exercise7_19 {
public static void main(String args[]) {
Buyer b = new Buyer();
b.buy(new Tv());
b.buy(new Computer());
b.buy(new Tv());
b.buy(new Audio());
b.buy(new Computer());
b.buy(new Computer());
b.buy(new Computer());
b.summary();
}
}
class Buyer {
int money = 1000;
Product[] cart = new Product[3]; // 구입한 제품을 저장하기 위한 배열
int i = 0; // Product배열 cart에 사용될 index
void buy(Product p) {
/*
1.1 가진 돈과 물건의 가격을 비교해서 가진 돈이 적으며 종료한다.
1.2 가진 돈이 충분하면, 제품의 가격을 가진 돈에서 빼고
1.3 장바구니에 구입한 물건을 담는다. (add메서드 호출)
*/
if(money >=p.price){
money = money - p.price;
add(p);
}else{
System.out.println("물건구입이 종료되었습니다");
System.out.println("남은 극액은 "+money+"입니다.");
return;
}
}
void add(Product p) {
/*
1.1 i의 값이 장바구니의 크기보다 같거나 크면
1.1.1 기존의 장바구니보다 2배 큰 새로운 배열을 생성한다.
1.1.2 기존의 장바구니의 내용을 새로운 배열에 복사한다.
1.1.3 새로운 장바구니와 기존의 장바구니를 바꾼다.
1.2 물건을 장바구니(cart)에 저장한다. 그리고 i의 값을 1 증가시킨다.
*/
if(cart.length <= i){
Product[] t = new Product[cart.length*2];
//t = cart.clone();
System.arraycopy(cart, 0, t, 0, cart.length);
//cart = new Product[cart.length*2];
cart =t;
}
cart[i] = p;
i++;
} // add(Product p)
void summary() {
/*
1.1 장바구니에 담긴 물건들의 목록을 만들어 출력한다.
1.2 장바구니에 담긴 물건들의 가격을 모두 더해서 출력한다.
1.3 물건을 사고 남은 금액(money)를 출력한다.
*/
int s = 0;
for(Product p:cart){
System.out.println(p.toString() +"가격은 ["+p.price+"]입니다.");
s += p.price;
}
System.out.println("구입한 물건의 총 가격은 ["+s+"]입니다.");
} // summary()
}
class Product {
int price; // 제품의 가격
Product(int price) {
this.price = price;
}
}
class Tv extends Product {
Tv() { super(100); }
public String toString() { return "Tv"; }
}
class Computer extends Product {
Computer() { super(200); }
public String toString() { return "Computer";}
}
class Audio extends Product {
Audio() { super(50); }
public String toString() { return "Audio"; }
}
'Language&FrameWorks > Java' 카테고리의 다른 글
도형(원,직사각형)의 넓이의 합을 구하는 문제 (0) | 2011.05.07 |
---|---|
속았던 문제? (0) | 2011.05.07 |
javadoc unmappable character for encoding MS949 (0) | 2011.04.05 |
Json 에서의 한글은 인코딩하여 보내준다. (0) | 2011.01.28 |
Could not find the main class, program will exit. (0) | 2010.10.05 |
댓글