인프런 커뮤니티 질문&답변

권정익님의 프로필 이미지
권정익

작성한 질문수

김영한의 실전 자바 - 기본편

섹션2. 문제와 풀이

해결된 질문

작성

·

145

0

productOrderMain의 리펙토링 문제입니다.

문제에서

'static void printOrders(ProductOrder[] orders) 배열을 받아서

배열에 들어있는 전체 ProductOrder 의 상품명, 가격, 수량을 출력합니다.'

라고 하는데 배열을 받는 다는 게 뭔가요?

매개변수 자리에 배열을 놓고 호출할 때도 배열 변수를 놓는 게 뭘 불러오고 대입이 되는 건지 이해가 되지 않습니다.ㅠㅠ

저는 for each 문이 아니라 그냥 for문으로 풀어보려 했는데 메서드에 배열을 받는다는 게 뭔지 몰라서 그냥 for문으로 어떻게 풀어야할지 모르겠습니다.

printOrders(orders);
static void printOrders(ProductOrder[] orders) {
    for (ProductOrder order : orders) {
        System.out.println("상품명: " + order.productName + ", 가격: " +
                order.price + ", 수량: " + order.quantity);
    }
}

답변 2

1

안녕하세요. 권정익님, 공식 서포터즈 David입니다.

어떤 메서드가 무엇을 받는다는 말은 메서드의 파라미터로 무언가를 전달받는다는 말입니다.

printOrders가 ProductOrder 배열을 받는다는 말은 printOrders가 ProductOrder 배열을 파라미터로 전달 받음을 뜻합니다.

printOrders(orders)는 orders 변수(배열)를 printOrders 메서드에 전달하여 printOrders를 호출하는 코드입니다.

잘 이해가 안 되신다면 각 코드가 무엇을 나타내는지 옆에 주석으로 적으며 흐름을 따라가 보시는 걸 추천드립니다.

static void printOrders(ProductOrder[] orders) {

// 동작 코드

}

public static void main(String[] args) {
  ProductOrder[] ordres = new ProdcutOrder[10];
  
  printOrders(orders);
}

감사합니다.

0

좀 쉽게 비유를 하자면,
printOrders(내용 생략) -> 창고
ProductOrder[] orders -> 물통(6개씩 포장되있는거)

이라고 생각하시면 쉬울것 같네요.

"창고 안으로 물통을 받아서 물통 갯수를 세어본다."라고 생각해 보시는것은 어떻습니까?

그냥 메서드 안으로 코드가 들어갔지 동작 하는것은 똑같습니다.
- 모르겠으면 "자바 - 입문편" 에서 배열로 상품을 출력하시는것을 보고(복습) 오시는것을 추천 드립니다.

그리고 "배열이름.length"을 쓰시면 배열의 길이를 셀수 있습니다.

권정익님의 프로필 이미지
권정익

작성한 질문수

질문하기