从数组返回内容

时间:2016-10-26 17:06:43

标签: java arrays

我尝试使用下面的代码分配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());
    }



}

如何从此代码返回数组的内容?我需要创建一个新对象吗?

2 个答案:

答案 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,这可能会造成混淆。