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

它是多餘的寫copy[i].toString()自從Java自身將訪問toString()方法來得到一個字符串表示你的PaperPublication對象。

+0

當我這樣做時,它現在給了我一個NullPointerException ..任何想法爲什麼?在我的PaperPublication類中,我有一個拷貝構造函數和一個覆蓋的toString方法 –

+0

@MikeJ這是因爲不是所有的數組元素都有一個實例化對象。循環訪問PaperPublication對象數組時可能會遇到Exception。在循環數組時,您應該有一個變量來跟蹤數組中實際元素的數量。或者,您可以使用arraylist,然後您不必自行跟蹤實例化元素的軌道號。 – user3437460

+0

@MikeJ如果我的解決方案有幫助,請記得通過點擊我答案旁邊的空洞的勾號來接受我的解決方案。 – user3437460

0

您正在嘗試打印Object類型的PaperPublication對象。 PaperPublication類中應該有一個方法返回它的值。如果不知道PaperPublication類,就無法給出具體的答案。

相關問題