我尝试使用下面的代码分配1到10之间的数字数组。基本上我被困在如何返回一个数组。我需要toString
方法吗?
package arrays1;
import java.util.Arrays;
public class Arrays1 {
/**
* @param args the command line arguments
*/
private int[] numbers;
private int DEFAULT_SIZE = 10;
public Arrays1(int size){
numbers = new int[DEFAULT_SIZE];
}
public int[] add(int[] n)
{
for(int i=0; i<numbers.length; i++){
numbers[i]=n[i];}
return numbers;
}
public int[] getValues(){
return numbers;
}
public static void main(String[] args) {
// TODO code application logic here
Arrays1 A = new Arrays1(9);
System.out.println(A.getValues());
}
}
如何从此代码返回数组的内容?我需要创建一个新对象吗?
答案 0 :(得分:4)
A.getValues()
正在返回一个指向整数数组numbers
对象的指针,这可能是您正在看到的输出。您不需要新对象,只需使用您创建的对象Arrays1 A
,并迭代其内容,如下所示:
public static void main(String[] args) {
// TODO code application logic here
Arrays1 A = new Arrays1(9);
for (int i = 0; i < A.getValues().length; i++){
System.out.println(A.numbers[i]);
}
}
答案 1 :(得分:3)
是的,toString
方法可用于将numbers
数组的内容序列化为String。但在这种情况下,你应该这样称呼它:
Arrays1 a = new Arrays1(9);
System.out.println(a); // it is an implicit call to toString()
另一个可接受的替代方案是让序列化成为客户的责任。在这种情况下,客户端应该依赖getValues()
方法,并自行序列化:
Arrays1 a = new Arrays1(9);
System.out.println(Arrays.toString(a.getValues()));
另一个较小的细节:检查你的构造函数:它不使用参数size
,这可能会造成混淆。