在每次调用时创建新数组的方法?

时间:2016-11-13 11:54:05

标签: java

我正在尝试创建一个方法,每次调用它时都会创建一个具有可识别名称的新数组。它应该创建大小为2的数组,在内部存储两个double值。

public static double[] newarray(double x, double y) {
    double a[] = new double[2];
    a[0] = x;
    a[1] = y;
}

基本上是这样的,但我希望数组的名称是可变的,这样我就可以使用相同的函数创建这样的多个数组。

例如,第一个数组是a,下一个是a1,a2,a3等等。

3 个答案:

答案 0 :(得分:1)

设置如下功能:

$2

然后这样称呼:

public static double[] newArray(double x, double y) {
    return new double[]{x, y};
}

答案 1 :(得分:1)

  

这样我就可以使用相同的函数创建多个这样的数组

你已经可以。

将此行添加到newarray()函数的末尾:

return a;

现在观察各种的消费者可以调用相同的功能。

double a1[] = newarray(0,1);
double a2[] = newarray(2,3);
System.out.printf("%f\n", a1[0]); // prints 0, as required

请注意,无论如何,创建数组a2并不会替换现有的数组a1

所以我们看到可以多次调用相同的函数newarray() ,每次都按值返回对单独的数组的引用。

我承认 newArray()内的,每次都会重复使用变量名a。但由于是成员变量,也不是静态变量:每次函数退出时,其状态都会丢失。它将在后续调用中重复使用相同的内存。

答案 2 :(得分:0)

如果你想要数组的不同名称可以有你的理由,也许使用HashMap结构帮助实现这一点。

public static void main(String[] args) {
        HashMap<String, double[]> arrays = new HashMap<>();
        String name = "a";
        for (int i = 0; i < 10; i++) {
            arrays.put(name + i, newarray(23, 43));
        }
    }

    public static double[] newarray(double x, double y) {
        double[] a = new double[2];
        a[0] = x;
        a[1] = y;
        return a;
    }

希望这个帮助