Java 使用';名称';参数:范围错误

Java 使用';名称';参数:范围错误,java,arrays,methods,scope,Java,Arrays,Methods,Scope,我正在为一个类项目创建一些助手方法。我想创建的方法之一是简单地创建一个int类型的数组,称为“name”,大小为“size”。问题出现在我尝试使用“name”参数创建数组的方法体中 public int[] createArray(String name, int size){ int[] name = new int[size]; } 除了获取一个“变量‘name’已经在作用域中定义了。”错误之外,我认为问题在于我不能在数组的构造中使用变量。如果是这样,我是否应该在这里使用“字符

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

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

    int[] name = new int[size];

}
除了获取一个“变量‘name’已经在作用域中定义了。”错误之外,我认为问题在于我不能在数组的构造中使用变量。如果是这样,我是否应该在这里使用“字符串名称”作为参数?我可以做一些解析/转换吗?最后,我必须使用/执行什么操作才能将参数从方法调用传递到“int[]\uuuuuuuuuuuuu=newint[size];”

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

最好的


Corey

在中重命名变量
name

int[] name = new int[size];

它应该很好用。因为
String name
用作方法的参数,所以作用域中存在另一个同名变量


另外,如果您想使用参数来实际命名数组变量,那么您可能会尝试在其运行时修改源代码,但您不能这样做。也就是说,变量
字符串名称
在方法中似乎不再有用。

在中重命名变量
名称

int[] name = new int[size];

它应该很好用。因为
String name
用作方法的参数,所以作用域中存在另一个同名变量


另外,如果您想使用参数来实际命名数组变量,那么您可能会尝试在其运行时修改源代码,但您不能这样做。也就是说,变量
字符串名
在该方法中似乎不再有用了。

您尝试做的事情是不可能的(除非您求助于“反射”,我不会推荐给相对初学者)

您希望创建一个数组变量,其名称要在运行时确定。你想做点什么

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

您尝试实现的Java方式是:

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

你尝试去做的是不可能的(除非你求助于“反思”,我不会推荐给一个相对初学者)

您希望创建一个数组变量,其名称要在运行时确定。你想做点什么

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

您尝试实现的Java方式是:

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

您不能基于字符串的值选择变量名。您不能基于字符串的值选择变量名。我确实想使用参数来命名数组变量,但现在我知道了为什么我不能。谢谢你的回复@CoreyJones Welcome:)如果这样做有帮助,请将其标记为答案,以便将来也能帮助人们。我确实想使用参数来命名数组变量,但现在我知道了为什么我不能。谢谢你的回复@CoreyJones欢迎:)如果这有帮助的话,请把它标记为一个答案,这样它也会对未来的人们有所帮助。谢谢!我不了解变量名,也不了解编译时会发生什么,比如您是如何解释的。我也很感激这个解决方案。谢谢!我不了解变量名,也不了解编译时会发生什么,比如您是如何解释的。我也很欣赏这个解决方案。