从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);