2017-10-10 4 views
0
내가 방법을 쓰고 싶어

을 반환 사본 내 PaperPublication 배열 :객체의 배열을 취하는 방법을 작성, 사본은, 다음

public static PaperPublication[] copyBooks(PaperPublication[] array) 
{ 

    PaperPublication[] copy = new PaperPublication[array.length]; 
    for (int i = 0; i < copy.length; i++) { 
     PaperPublication temp = array[i]; 
     if (temp != null) { 
      copy[i] = new PaperPublication(temp); 
     } 
    } 
    return copy; 
} 

나는 시도하고 다음과 같이 복사 된 배열을 인쇄,

PaperPublication[] copy = driverClass.copyBooks(original); 
for (int i = 0; i < 12; i++) 
    { 
     System.out.println(copy.toString()); 
    } 

그것은 위치를 산출하고, 값없는 : 그것은 다시 있도록

[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 
[LPackage1.PaperPublication;@15db9742 

어떻게 코드를 작성 않습니다 값을 대신 사용 하시겠습니까? (이미 클래스에 toString() 메서드를 덮어 썼습니다)

+1

인쇄 할 때 색인을 지정하는 것을 잊어 버렸습니다.'System.out.println (copy [i]); ' – janos

답변

0

값을 반환하도록 코드를 작성하려면 어떻게해야합니까? (이미 클래스에 toString() 메서드를 덮어 썼습니다.)

개별 요소가 아닌 전체 배열을 인쇄하고 있습니다.

변경 :

System.out.println(copy.toString()); 

사람 :

System.out.println(copy[i]); 

에 대한 문자열 표현을 얻기 위해 toString() 메서드에 액세스 자체에 자바 이후 copy[i].toString()를 작성하는 중복 귀하의 PaperPublication 개체.

+0

이 작업을 수행하면 이제 NullPointerException이 발생합니다. 이유는 무엇입니까? 내 PaperPublication 클래스에서 복사 생성자와 덮어 쓴 toString 메서드가 있습니다. –

+0

@MikeJ 모든 배열 요소에 인스턴스화 된 개체가있는 것은 아니기 때문입니다. PaperPublication 객체 배열을 반복하면서 예외가 발생할 수 있습니다. 배열을 루핑하는 동안 배열에있는 실제 요소의 트랙 번호를 유지하는 변수가 있어야합니다. 또는 arraylist를 사용할 수 있습니다. 그러면 인스턴스화 된 요소의 수를 직접 추적 할 필요가 없습니다. – user3437460

+0

@MikeJ 내 솔루션이 도움이된다면 내 대답 옆에있는 빈 모양의 체크를 클릭하여 내 솔루션을 수락하는 것을 잊지 마십시오. – user3437460

0

Object 유형의 PaperPublication 객체를 인쇄하려고합니다. 해당 값을 반환하는 PaperPublication 클래스의 메서드가 있어야합니다. PaperPublication 클래스를 모른 채 구체적인 대답을 제시 할 수 없습니다.