具有“名称”参数的数组创建方法:范围错误

时间:2017-08-24 20:05:29

标签: java arrays methods scope

我正在为类项目创建一些辅助方法。我想要创建的方法之一是简单地创建一个int类型的数组,称为'name','size'大小。问题出现在我尝试使用'name'参数创建数组的方法体中。

public int[] createArray(String name, int size){

    int[] name = new int[size];

}

除了在范围内定义了“变量”名称之外。错误,我认为问题是我不能在构造数组时使用变量。如果是这种情况,我不应该在这里使用'String name'作为参数吗?我可以做某种解析/转换吗?最后,我必须使用/做什么来将方法调用中的参数传递给“int [] _____ = new int [size];”?

我可能只是在main方法中制作我需要的2个数组,但我想知道我做错了什么。

最佳,

科里

2 个答案:

答案 0 :(得分:2)

中重命名变量name
int[] name = new int[size];

int[] otherName = new int[size];

它应该可以正常工作。由于范围中有另一个具有相同名称的变量,因为String name被用作方法的参数。

如果您想使用该参数实际命名您的数组变量,那么您可能会尝试在运行时修改源代码,但您不能。也就是说,变量String name似乎不再适用于该方法。

答案 1 :(得分:0)

你尝试做的事情是不可能的(除非你诉诸"反思"我不会向相对初学者推荐)。

您希望创建一个数组变量,其名称要在运行时决定。你想做类似

的事情
int[] array1;
int[] array2;
createArray("array1", 17);
createArray("array2", 25);

变量名array1array2在编译时存在。程序运行时,它们不再可用(对于普通的Java代码)。要传递给"array1"方法的"array2"createArray()参数是字符串,Java运行时不会将这些字符串中的字符与数组变量相关联。

您尝试实现的方法的Java方式是:

int[] array1 = createArray(17);
int[] array2 = createArray(25);
private int[] createArray(int size) {
    return new int[size];
}