从java中的另一个类获取数组

从java中的另一个类获取数组,java,arrays,Java,Arrays,我有一个文件名列表,用于在另一个类中打开图像 public String[] getImages(){ for(int i=0;i<50;i++){ fileNames[i]= allData[i][10]; } return fileNames; } 我知道这段代码是错误的,但这正是我试图做的,我只是在努力从另一个类中获取数组,然后我想我的图像数组将在这之后工作。我注意到您的代码有一些问题 public String[] getImages(){ String[

我有一个文件名列表,用于在另一个类中打开图像

public String[] getImages(){
  for(int i=0;i<50;i++){
    fileNames[i]= allData[i][10];
  }
  return fileNames;
}

我知道这段代码是错误的,但这正是我试图做的,我只是在努力从另一个类中获取数组,然后我想我的图像数组将在这之后工作。

我注意到您的代码有一些问题

public String[] getImages(){
  String[] fileNames = new String[allData.length];
  for(int i=0;i<allData.length;i++){
    fileNames[i]= allData[i]; /* Assuming allData is another String[] */
  }
  return fileNames;
}

我认为如果你增加更多关于上下文的信息会有所帮助


具体来说,“readAllCards”和“allData”对象是什么?

一个好方法是将数组作为参数传递给构造函数。因此,在实例化加载图像的类时,您可以按照以下方式执行操作:

ImageLoader imageLoader = new ImageLoader(readAllCards.getFileNames());
Image[] cardImages = imageLoader.getImages();
其中“imageLoader”是需要访问文件名数组的对象

然后在ImageLoader类中,您需要添加一个新的构造函数:

class ImageLoader {

    private String[] filenames;

    public ImageLoader(String[] filenames) {
        this.filenames = filenames;
    }

    public Image[] getImages() {
        Image[] cards = new Image[50];

        for (int i = 0; i < 50; i++) {
            cards[i] = new Image(fileNames[i]);
        }
        return cards;
    }
}
类图像加载器{
私有字符串[]文件名;
公共图像加载器(字符串[]文件名){
this.filenames=文件名;
}
公共映像[]获取映像(){
图像[]卡=新图像[50];
对于(int i=0;i<50;i++){
卡片[i]=新图像(文件名[i]);
}
回程卡;
}
}

如果这没有帮助,那么我想我们需要更多关于你的课堂设计的信息。如果你能完整地发布你的课程,那将非常有帮助

将数组传递到
getImages(…)


注意:有很多方法可以解决这个问题。这只是一个简单的解决方案

你是怎么开设另一门课的?在构造函数中传递数组?在第一个类中定义getImages(),然后在第二个类中调用getFileNames()。为什么?另外,不需要在第二个类中分配fileNames数组。因为下一行返回数组,所以这里只需要一个引用。readAllCards是第一个类(我知道,它应该以大写字母my bad开头),它解释一个文件,其中包含卡的所有所需数据,如卡名、类型以及前后图像文件名。allData是从该文件创建的2d数组。这不是答案。这应该是一个评论。我必须添加它作为回答,因为我没有必要的代表添加评论!
ImageLoader imageLoader = new ImageLoader(readAllCards.getFileNames());
Image[] cardImages = imageLoader.getImages();
class ImageLoader {

    private String[] filenames;

    public ImageLoader(String[] filenames) {
        this.filenames = filenames;
    }

    public Image[] getImages() {
        Image[] cards = new Image[50];

        for (int i = 0; i < 50; i++) {
            cards[i] = new Image(fileNames[i]);
        }
        return cards;
    }
}
public String[] getImages(String[] fileNames){
    //assuming fileNames is initialized 
    for(int i=0;i<50;i++){
        fileNames[i]= allData[i][10];
    }
    return fileNames;
}
String fileNames[] = new string [50];
fileNames = readAllCards.getFileNames(fileNames);