JAVA 37多機能性のメリット2
2.配列を使用した複数のオブジェクトの処理
Product[] p = new Product[3]; //Product p[]도 된다!
p[0] = new Tv();
p[1] = new Computer();
p[2] = new Audio();
ハハハハ
class Product2 {
int price;
int bonusPoint;
Product2(int price) {
this.price = price;
bonusPoint = (int)(price/10.0);
}
}
class Tv22 extends Product2 {
Tv22() {
super(800);
}
public String toString() {
return "Tv";
}
}
class Computer2 extends Product2 {
Computer2() {
super(300);
}
public String toString() {
return "Computer";
}
}
class Audio2 extends Product2 {
Audio2() {
super(100);
}
public String toString() {
return "Audio";
}
}
class Buyer2 {
int money = 1000;
int bonusPoint = 0;
Product2[] cart = new Product2[10]; //여기에 cart를 만드네?
int i = 0;
void buy(Product2 p) {
if (money < p.price) {
System.out.println("잔액이 부족하여 "+p+"을/를 구입할 수 없습니다.");
return;
}
money -= p.price;
bonusPoint += p.bonusPoint;
cart[i++] = p;
//구입한 제품의 주소를 Product2타입의 참조변수 배열 cart[i]에 저장
System.out.println(p+"을/를 구입하셨습니다.");
}
void summary() { //구매한 물품의 전체 정보
int sum = 0; //합계
String itemList = ""; //구매 물품 목록
for(int i=0; i<cart.length; i++) {
if(cart[i]==null) break;
//이거 어렵다. 더이상 구매하지 않았으면 반복문 빠져나오기
sum += cart[i].price;
itemList += cart[i]+", ";
//cart[i].toString()
}
System.out.println("구입하신 물품의 총금액은 "+sum+"입니다.");
System.out.println("구입하신 물품은 "+itemList+"입니다.");
}
}
public class Ex7_09 {
public static void main(String[] args) {
Buyer2 b = new Buyer2();
b.buy(new Tv22());
b.buy(new Computer2());
b.buy(new Audio2());
b.summary();
//이렇게 호출!!
System.out.println("현재 잔액은 "+b.money+"입니다.");
System.out.println("현재 보너스점수는 "+b.bonusPoint+"입니다.");
}
}
Tv을/를 구입하셨습니다.
잔액이 부족하여 Computer을/를 구입할 수 없습니다.
Audio을/를 구입하셨습니다.
구입하신 물품의 총금액은 900입니다.
구입하신 물품은 Tv, Audio, 입니다.
현재 잔액은 100입니다.
현재 보너스점수는 90입니다.
骨が折れる
->アップグレード!
Ch07Re2
Ex7_09
class Product22{
int price;
int bonusPoint;
public Product22(int price) { //매개생성자
super(); //생성자 첫줄에 생성자 호출이 없으면 자동으로 추가
this.price = price;
bonusPoint = (int) (price / 10.0);
}
}
class Tv22 extends Product22{
public Tv22(int price) { //매개생성자
super(price); //생성자 첫줄에 생성자 호출
}
public String toString() { return "Tv";}
}
class Computer22 extends Product22{
public Computer22(int price) { //매개생성자
super(price); //생성자 첫줄에 생성자 호출
}
public String toString() { return "Computer";}
}
class Buyer22{
int money;
int bonusPoint;
// Product22[] cart = new Product22[10];; //**장바구니, 포함관계
Product22[] cart;
public Buyer22(int money) {
this.money = money;
bonusPoint = 0;
cart = new Product22[10];;
System.out.println("현재 소지금액은 "+money+"원입니다.");
System.out.println("현재 보너스점수는 "+bonusPoint+"점입니다.");
}
int i=0;
void buy(Product22 p) {
if(money<p.price) {
System.out.println("금액이 부족하여 "+p+"을/를 구입할 수 없습니다.");
return; //***
}
money -= p.price;
bonusPoint += p.bonusPoint;
System.out.println(p+"을/를 구입하셨습니다.");
cart[i++] = p; //*******
}
void summary() {
int sum = 0; //합계****
String itemList = ""; //구매목록****
System.out.print("구입하신 제품은 ");
if(cart[0] == null) {
System.out.println("없습니다.");
} else {
for(int i=0; i<=cart.length; i++) {
if(cart[i]==null) break; //*****
sum += cart[i].price;
itemList += cart[i]+", "; //****
}
System.out.println(itemList+"입니다.");
}
System.out.println("총 지출은 "+sum+"원입니다.");
System.out.println("잔액은 "+money+"원입니다.");
System.out.println("보너스점수는 "+bonusPoint+"점입니다.");
}
}
public class Ex7_09 {
public static void main(String[] args) {
Buyer22 b = new Buyer22(1000);
b.buy(new Tv22(1200));
b.buy(new Computer22(400));
b.buy(new Tv22(500));
b.summary();
}
}
현재 소지금액은 1000원입니다.
현재 보너스점수는 0점입니다.
금액이 부족하여 Tv을/를 구입할 수 없습니다.
Computer을/를 구입하셨습니다.
Tv을/를 구입하셨습니다.
구입하신 제품은 Computer, Tv, 입니다.
총 지출은 900원입니다.
잔액은 100원입니다.
보너스점수는 90점입니다.
生きていけない時.현재 소지금액은 1000원입니다.
현재 보너스점수는 0점입니다.
금액이 부족하여 Tv을/를 구입할 수 없습니다.
구입하신 제품은 없습니다.
총 지출은 0원입니다.
잔액은 1000원입니다.
보너스점수는 0점입니다.
->アップグレード!!ArrayListCh07Re2
Ex7_09_2
import java.util.ArrayList;
class Product33{
int price;
int bonusPoint;
public Product33(int price) { //매개생성자
super(); //생성자 첫줄에 생성자 호출이 없으면 자동으로 추가
this.price = price;
bonusPoint = (int) (price / 10.0);
}
}
class Tv33 extends Product33{
public Tv33(int price) { //매개생성자
super(price); //생성자 첫줄에 생성자 호출
}
public String toString() { return "Tv";}
}
class Computer33 extends Product33{
public Computer33(int price) { //매개생성자
super(price); //생성자 첫줄에 생성자 호출
}
public String toString() { return "Computer";}
}
class Buyer33{
int money;
int bonusPoint;
// Product22[] cart = new Product22[10];; //**장바구니, 포함관계
ArrayList<Product33> list = new ArrayList<Product33>();
// Product33[] cart;
public Buyer33(int money) {
this.money = money;
bonusPoint = 0;
// cart = new Product33[10];;
System.out.println("현재 소지금액은 "+money+"원입니다.");
System.out.println("현재 보너스점수는 "+bonusPoint+"점입니다.");
}
int i=0;
void buy(Product33 p) {
if(money<p.price) {
System.out.println("금액이 부족하여 "+p+"을/를 구입할 수 없습니다.");
return; //***
}
money -= p.price;
bonusPoint += p.bonusPoint;
System.out.println(p+"을/를 구입하셨습니다.");
list.add(p); //********
}
void summary() {
int sum = 0; //합계****
System.out.print("구입하신 제품은 ");
if(list.isEmpty()) {
System.out.println("없습니다.");
} else {
for(int i=0; i<list.size(); i++)
sum += list.get(i).price;
System.out.println(list+" 입니다.");
}
System.out.println("총 지출은 "+sum+"원입니다.");
System.out.println("잔액은 "+money+"원입니다.");
System.out.println("보너스점수는 "+bonusPoint+"점입니다.");
}
}
public class EX7_09_2 {
public static void main(String[] args) {
Buyer33 b = new Buyer33(1000);
b.buy(new Tv33(1200));
b.buy(new Computer33(400));
b.buy(new Tv33(500));
b.summary();
}
}
현재 소지금액은 1000원입니다.
현재 보너스점수는 0점입니다.
금액이 부족하여 Tv을/를 구입할 수 없습니다.
Computer을/를 구입하셨습니다.
Tv을/를 구입하셨습니다.
구입하신 제품은 [Computer, Tv] 입니다.
총 지출은 900원입니다.
잔액은 100원입니다.
보너스점수는 90점입니다.
生きていけない時.현재 소지금액은 1000원입니다.
현재 보너스점수는 0점입니다.
금액이 부족하여 Tv을/를 구입할 수 없습니다.
구입하신 제품은 없습니다.
총 지출은 0원입니다.
잔액은 1000원입니다.
보너스점수는 0점입니다.
Ref
Reference
この問題について(JAVA 37多機能性のメリット2), 我々は、より多くの情報をここで見つけました https://velog.io/@lecharl/JAVA37テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol