2016-09-16 204 views
0

我試圖打印數組的內容與陣列不打印內容

toString() 

,我想不出什麼我做錯了。

輸出應該是從0到100的5個隨機數,我將存儲在數組中,畢竟我必須將它們全部打印出來。

這裏是我的代碼:

public class Ary { 

private int[] anArray; 
private int arraySize; 
private String numberAsString; 
Random r = new Random(); 

public Ary(int arraySize) { 
    this.anArray = printArray(); 
} 

public Ary() { 
    arraySize = 2; 
    printArray(); 
} 

public int getArraySize() { 
    return arraySize; 
} 

public void setArraySize(int arraySize) { 
    this.arraySize = arraySize; 
} 

public int[] printArray() { 
    // Assign anArray with a custom number 
    anArray = new int[arraySize]; 

    for(int numbers : anArray) { 
     anArray[numbers] = r.nextInt(100); 
     System.out.println(anArray[numbers] + " "); 
    } 
    return anArray; 
} 

@Override 
public String toString() { 
    return "Array = " + Arrays.toString(anArray); 
} 
} 

輸出:

[email protected] 

這裏是我的代碼以Arrays.toString():

public int[] printArray() { 
    // Assign anArray with a custom number 
    anArray = new int[arraySize]; 

    for(int numbers : anArray) { 
     anArray[numbers] = r.nextInt(100); 
     System.out.println(Arrays.toString(anArray)); 
    } 
    return anArray; 
} 

我已經嘗試過萬噸方法,但仍然沒有弄清楚..你能解釋我做錯了什麼?

非常感謝!

+1

Java數組不會覆蓋'Object.toString()'。你可以使用'Arrays.toString()'。 –

+0

@ElliottFrisch我已經試過了,還是給了我相同的輸出 –

+1

@ S.Anthony你確定嗎? 'Arrays.toString(anArray);'應該工作得很好。 – Li357

回答

2

您已更改toString()的簽名(因此您未調用您定義的方法)。相反,你需要像

@Override 
public String toString() { 
    return "Array = " + Arrays.toString(anArray); 
} 

而且你應該在你的構造(S)初始化anArray並刪除 「printArray

public Ary(int arraySize) { 
    this.arraySize = arraySize; 
    this.anArray = new int[arraySize]; 
    for (int i = 0; i < arraySize; i++) { 
     this.anArray[i] = r.nextInt(101); // <-- [0, 100], or [0, 101) 
    } 
} 

public Ary() { 
    this(5); // <-- use the other constructor. 
} 

並且覆蓋註釋會提醒您注意的錯誤。
而且在完成初始化之前,您不應該打印陣列。

+0

嗯......有趣。現在我得到這個:'Array = []' –

+0

@ S.Anthony你現在在哪裏/如何初始化數組? –

+0

我更新了我的代碼 –

1

這是一個自定義的方法System.out.print(array.toString()); 所以你超載了的toString()但在控制檯打印出的對象是toString()方法(不PARAMS)是越來越調用什麼...

刪除INT []參數,它會正常調用,需要肯定的修改方法太

public String toString() { 
    return "Array = " + Arrays.toString(a); 
} 

尤斯德覆蓋註解的身體會始終建議,它會阻止的錯誤同時編寫代碼....

+1

您可能希望在那裏使用'@ Override'註解來覆蓋Object的方法 – Li357

+0

另外,還不清楚'a'是從哪裏來的。 –