2017-10-10 10 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]); 

自分自身でのJavaので、copy[i].toString()を書くために冗長であるための文字列表現を取得するには、toString()メソッドにアクセスしますあなたのPaperPublicationオブジェクト

+0

これを行うと、今ではNullPointerExceptionが発生します。理由は何ですか?私のPaperPublicationクラスでは、コピーコンストラクタと上書きされたtoStringメソッドがあります。 –

+0

@MikeJこれは、すべての配列要素にインスタンス化されたオブジェクトがあるわけではないためです。 PaperPublicationオブジェクトの配列をループしている間に例外が発生する可能性があります。配列をループしている間は、配列内の実際の要素の数を追跡する変数が必要です。あるいは、arraylistを使用することができます。インスタンス化された要素の数を自分で追跡する必要はありません。 – user3437460

+0

@MikeJ私のソリューションが助けてくれたら、私の答えの横にあるくぼんだようなチックをクリックして、私の解決策を受け入れることを忘れないでください。 – user3437460

0

Object型のPaperPublicationオブジェクトを印刷しようとしています。その値を返すPaperPublicationクラスのメソッドがあるはずです。 PaperPublicationクラスを知らなくても、特定の答えを出すことはできません。

関連する問題