我正在尝试创建一个程序,该程序将搜索文件数组并将唯一文件名存储到新文件数组中并返回该新数组,只将重复项放入一次(如果有的话)。我的代码会运行,但不会将值存储到我创建的新文件数组中,该文件数组没有设定长度。当我调用它时,它只返回一个空数组。我设置它的方式是检查是否有任何重复项,如果有,则将重复项存储一次,如果没有,则仅存储值并继续。问题是一旦通过 for 循环,它就不会存储这些值。有没有更好的方法将值存储在文件数组中?
这是我的方法uniqueFile
,它从我的测试块接收文件数组。
public static File[] getUnique(File[] files) {
int count = 0, place = 0;
File[] newFile = new File[] {};
for (int i = 0; i < files.length; i++) {
count = 0;
for (int x = 1; x < files.length; x++) {
if (files[i].equals(files[x]))
count++;
}
try {
if (count >= 1)
newFile[place] = files[i];
else
newFile[place] = files[i];
} catch (Exception e) {
}
place++;
}
return newFile;
}
这是我的测试块:
{
File Freckle = new File("Freckle");
File Pickle = new File("Pickle");
File Sam = new File("Sam");
File Cat = new File("Cat");
File[] files = new File[] { Freckle, Pickle, Freckle, Sam, Cat,
Pickle };
File[] output = ArrayExercises.getUnique(files);
System.out.println(Arrays.toString(output));
}
我输入了通用文件名来测试它是否有效。最终我将合并实际文件,但我想在继续之前先弄清楚这个错误。