• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

displayInfo 메소드에 배열 인스턴스 문의

24.05.05 15:33 작성 조회수 57

0

Book 클래스 displayInfo 메소드에 book1 ~ book3 까지 각각 인스턴스를 넣어 정상적으로 출력이 되었습니다

 

void displayInfo(){
        System.out.println("제목:" + title + ", 저자:" +author+ ", 페이지:" + page);
    }

--- Main 메소드 --- 
book1.displayInfo();
book2.displayInfo();
book3.displayInfo();

 

만약 displayInfo 메소드에 Books 인스턴스 배열을 매개 변수로 넣고 for문으로 처리하고 싶으면 어떻게 코드 수정을 해야 할까요? 뾰족한 수가 생각이 안나 스스로 해보는 중인데 ㅠㅠ 되지 않네요 혹시 가능할까요..?

 

Book 클래스 displayInfo 메소드에 아무 매개변수를 배열 인자를 받아야 뭐 해결이 될거 같은데..ㅠ

 

< 시도중인 코드>

  
=== Book 클래스 displayInfo 메소드=== 

void displayInfo(Book[] books){
    for(int i=0; i <= books.length;i++){
System.out.println("제목:" + books[i].title + ", 저자:" +ooks[i]. author+", 페이지:" + ooks[i]. page);
    }
}


=== 메인 메소드 ===
Book book1 = new Book();
Book book2 = new Book("Hello Java", "Seo");
Book book3 = new Book("JPA 프로그래밍","Kim", 700);

Book[] books = {book1, book2, book3};

books.displayInfo();

답변 1

답변을 작성해보세요.

1

y2gcoder님의 프로필

y2gcoder

2024.05.05

안녕하세요. 홍태경님, 공식 서포터즈 y2gcoder입니다.

다른 것을 건드릴 필요는 없으실 것 같습니다! BookMain만 수정하시면 될 것 같습니다 🙂

package construct.ex;

public class BookMain {

    public static void main(String[] args) {
        // 기본 생성자 사용
        Book book1 = new Book();
//        book1.displayInfo();

        // title과 author만을 매개변수로 받는 생성자
        Book book2 = new Book("Hello Java", "Seo");
//        book2.displayInfo();

        // 모든 필드를 매개변수로 받는 생성자
        Book book3 = new Book("JPA 프로그래밍", "kim", 700);
//        book3.displayInfo();

        Book[] books = {
                book1, book2, book3
        };

        for (Book book : books) {
            book.displayInfo();
        }
    }
}
이렇게 하셔도 되고, 더 줄여본다면 

package construct.ex;

public class BookMain {

    public static void main(String[] args) {
        Book[] books = {
                new Book(), 
                new Book("Hello Java", "Seo"), 
                new Book("JPA 프로그래밍", "kim", 700)
        };

        for (Book book : books) {
            book.displayInfo();
        }
    }
}

이렇게 위와 같이 해볼 수 있을 것 같습니다 🙂

 

감사합니다.