2016-09-16 144 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'是从哪里来的。 –