정구리의 우주정복

[Java] 객체를 배열로 다루기 본문

STUDY/K-DIGITAL

[Java] 객체를 배열로 다루기

Jungry_ 2022. 8. 18. 00:17
반응형

객체를 배열로 만들어서 사용하는 방법을 알아보아요옹

 

만약 Drink.java 에 name,totalNum,totalPrice 가 정의되어있다고 가정하고 

 

DrinkMain.java 에 Drink 객체를 생성해서 사용한다고 가정해보자 

만약 객체를 3개 생성한다고 하면 

Drink d1 = new Drink();
Drink d2 = new Drink();
Drink d3 = new Drink();

d1.name = "정구링"; 
. . .

이런식으로 사용할 수 있다 하지만 객체를 배열로 생성한다면 어떨까 ?!?!

 

Scanner sc = new Scanner(System.in);

Drink d[] = new Drink[3];

for(int i=0; i<3; i++){
	d[i] = new Drink();
    d[i].name = sc.next();
}

이런식으로 만들면 객체를 배열로 생성할 수 있다 !!

여기서 중요한 것은 Drink d[] = new Drink[3]; 이후에

d[i] = new Drink();   이렇게 해 줘야지 사용할 수 있다는것 !!!! 

 

public class Drink {

	String name;
	int totalNum;
	int totalPrice;
	
	
	void output() {
		System.out.printf("---%s---\n",name);
		System.out.printf("총 판매 수량 : %d\n",totalNum);
		System.out.printf("총 판매 금액 : %d\n",totalPrice);
	}
}
public class DrinkMain {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.print("음료 메뉴 수량 > ");
		int drinkNum = sc.nextInt();
		
		Drink drink[] = new Drink[drinkNum];
		int price[] = new int[drinkNum];
		
		for(int i = 0; i<drinkNum;i++) {
			System.out.print("음료 이름 입력 > ");
			drink[i] = new Drink();
			drink[i].name = sc.next();
		}
		for(int i=0; i<price.length; i++ ) {
			System.out.printf("%s 의 가격 입력 > ",drink[i].name);
			price[i] = sc.nextInt();
		}
		
		boolean check = true;
		
		//현재 주문하는 애들 개수 
		int nowOrder[] = new int[drinkNum];
		
		while(check) {
			System.out.println("### 선택 ###");
			System.out.println("1. 주문 ");
			System.out.println("2. 결제 ");
			System.out.println("3. 총 매출 현황 ");
			System.out.println("0. 프로그램 종료  ");
			System.out.print(">> ");
			int menu = sc.nextInt();
			
			switch(menu) {
			case 0:
				check = false;
				return;
			case 1:
				//화면에 메뉴 뿌려주기 
				System.out.println("### 메뉴 ###");
				for(int i=0; i<drink.length; i++) {
					System.out.printf("%d. %s   가격 : %d\n",(i+1),drink[i].name,price[i]);
				}
				//메뉴 선택하기 
				System.out.printf("메뉴 선택 > ");
				int order = sc.nextInt();
				System.out.printf("개수 입력 > ");
				int count = sc.nextInt();
				
				nowOrder[order-1] += count;
				break;
				
			case 2:
				//결제 -> 어떤거 장바구니에 담겼는지 출력하기 
				//담긴 애들 총 매출 현황 올려주기 
				//장바구니 초기화 
				System.out.println("### 결제 하기 ###");
				//뿌려주기 
				for (int i=0; i<drink.length;i++) {
					System.out.printf("---%s---\n",drink[i].name);
					System.out.printf("총 주문 수량 > %d\n",nowOrder[i]);
					System.out.printf("총 주문 금액 > %d\n",price[i]*nowOrder[i]);
					
					drink[i].totalNum += nowOrder[i];
					drink[i].totalPrice += price[i]*nowOrder[i];
				}
				
				System.out.println("결제 완료 되었습니다.");
				
				//장바구니 초기화
				for(int i=0;i<nowOrder.length;i++) {
					nowOrder[i] = 0;
				}
				break;
				
			case 3:
				System.out.println("### 매출 현황 ###");
				for(int i=0; i<drink.length; i++) {
					drink[i].output();
				}
				
				break;
			default:
				System.out.println("잘못된 선택입니다.");
			}
		}
	}

}

사용 예시 !

반응형
Comments