我有一个程序,我应该在其中创建一个类,该类具有一个成员函数,该函数创建不同简单数据类型的数组。我在 main 方法中实例化一个类,即创建该类的一个对象,并调用 createArray 方法。当我尝试使用 Arrays.fill(name,startIndex, endIndex, value) 填充具有相同类型数据的数组时,它找不到具有此类名称的数组。我想请问一下这是为什么?
import java.lang.reflect.Array;
import java.util.Arrays;
public class MainClass {
public void createArray(){
int [] ints = new int[10];
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(ints,0,9,8);
}
}
}
最佳答案
您的代码存在一些问题,下面提供了更简单的版本:
public class MainClass {
public void createArray(){
//This lives only in here. It is not available outside.
int [] ints = new int[10];
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
mcl.createArray();
for (int i = 0;i<10;i++){
//cannot resolve symbol ints - why?
Arrays.fill(ints,0,9,8);
}
}
}
在您创建的代码中,ints
仅存在于 createArray
方法中。一旦执行跳出该方法,该数组就不再可用并被标记为垃圾回收。
要解决这个问题,您需要更改方法签名以返回
一个int
类型的数组(这样当您调用createArray
方法,此方法返回它创建的数组)。然后,您需要确保捕获主类中返回的数组。然后您就可以对其执行操作。
关于java - 在 java 类的 main 方法中按名称访问和填充数组(通过成员函数创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850411/