📌Q097 Class
package com.test.question.q97;
public class Q097 {
public static void main(String[] args) {
/*
● 요구사항
Refrigerator 클래스와 Item 클래스를 설계하시오.
● 조건
- Refrigerator 객체의 정보
Item을 최대 100개까지 담을 수 있다.(멤버 변수 = Item 배열)
- Refrigerator 객체의 사용
Item을 냉장고에 넣는다. void add(Item item);
Item을 냉장고에서 꺼낸다. Item get(String name);
냉장고에 있는 Item의 개수를 확인한다. int count();
냉장고에 있는 Item을 확인한다. void listItem();
- Item 객체의 정보
식품명, 유통기한
● 호출
Refrigerator r = new Refrigerator();
Item item1 = new Item();
item1.setName("김치");
item1.setExpiration("2023-08-16");
r.add(item1);//냉장고에 넣기
Item item2 = new Item();
item2.setName("깍두기");
item2.setExpiration("2023-08-09");
r.add(item2);//냉장고에 넣기
Item item3 = new Item();
item3.setName("멸치볶음");
item3.setExpiration("2023-08-11");
r.add(item3);//냉장고에 넣기
Item item4 = r.get("깍두기");//냉장고에서 꺼내기
System.out.printf("%s의 유통기한 : %s\n", item4.getName(), item4.getExpiration());
System.out.printf("냉장고 안의 총 아이템 개수 : %d개\n", r.count());
r.listItem();
● 출력
'김치'를 냉장고에 넣었습니다. //r.add(item1);
'깍두기'를 냉장고에 넣었습니다. //r.add(item2);
'멸치볶음'를 냉장고에 넣었습니다. //r.add(item3);
깍두기의 유통기한 : 2023-08-09 //printf();
냉장고 안의 총 아이템 개수 : 2개 //printf();
[냉장고 아이템 목록] //r.listItem();
김치(2023-08-16)
멸치볶음(2023-08-11)
*/
Refrigerator r = new Refrigerator();
Item item1 = new Item();
item1.setName("김치");
item1.setExpiration("2023-08-16");
r.add(item1);//냉장고에 넣기
Item item2 = new Item();
item2.setName("깍두기");
item2.setExpiration("2023-08-09");
r.add(item2);//냉장고에 넣기
Item item3 = new Item();
item3.setName("멸치볶음");
item3.setExpiration("2023-08-11");
r.add(item3);//냉장고에 넣기
Item item4 = r.get("깍두기");//냉장고에서 꺼내기
System.out.printf("%s의 유통기한 : %s\n", item4.getName(), item4.getExpiration());
System.out.printf("냉장고 안의 총 아이템 개수 : %d개\n", r.count());
r.listItem();
}
}
📌Item Class
package com.test.question.q97;
class Item {
private String name; // 식품명
private String expiration; // 유통기한
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getExpiration() {
return expiration;
}
public void setExpiration(String expiration) {
this.expiration = expiration;
}
}
📌Refrigerator Class
package com.test.question.q97;
import java.util.Calendar;
class Refrigerator {
private Item[] items = new Item[100];
private int index = 0;
// 냉장고에 아이템 추가
public void add(Item item) {
// 현재 아이템 개수가 배열 최대 크기보다 작은 경우에만 추가
if (this.index < this.items.length) {
this.items[index] = item;
System.out.printf("'%s'를 냉장고에 넣었습니다.\n", this.items[index].getName());
this.index++;
} else {
System.out.println("냉장고가 터질 지경입니다.");
}
}
// 냉장고에서 아이템을 꺼냄
public Item get(String name) {
System.out.println();
int targetIndex = -1;
// 냉장고에 있는 아이템들을 순회하면서 찾고자 하는 아이템을 이름으로 비교하여 인덱스를 찾음
for (int i = 0; i < index; i++) {
if (items[i].getName().equals(name)) {
targetIndex = i;
break;
}
}
// 찾은 아이템이 존재하는 경우
if (targetIndex != -1) {
// 해당 인덱스에 있는 아이템을 임시 변수에 저장
Item tempItem = items[targetIndex];
// 꺼낸 아이템을 배열에서 왼쪽으로 Shift하여 빈 자리를 메꿈
for (int i = targetIndex; i < items.length - 1; i++) {
items[i] = items[i + 1];
}
// 맨 마지막 인덱스를 null로 초기화하여 빈 자리를 처리
items[items.length - 1] = null;
index--;
return tempItem;
} else {
return null;
}
}
// 냉장고에 있는 아이템 개수를 확인
public int count() {
return this.index;
}
// 냉장고에 있는 아이템 목록 출력
public void listItem() {
System.out.println();
System.out.println("[냉장고 아이템 목록]");
// 냉장고에 있는 모든 아이템들을 순회하면서 이름과 유통기한을 출력
for (int i = 0; i < this.index; i++) {
System.out.printf("%s(%s)\n", this.items[i].getName(), this.items[i].getExpiration());
}
}
}