我试图创建一个程序,它将通过文件数组进行搜索并将唯一文件名存储到新的文件数组中并返回该新的数组,并且仅将重复项放入一次(如果有的话)。我的代码运行通过,但不会将值存储到我创建的新文件阵列中,该阵列没有设置长度。当我调用它时,它只返回一个空数组。我设置它的方式是检查是否有任何重复,如果是,则存储重复一次,如果不存在,则只存储该值并继续。问题在于,一旦它通过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));
}
我把通用文件名进行测试,看看它是否会工作。最终我会合并实际的文件,但是我想在继续之前先弄清楚这个bug。
为什么不使用Set代替? –
Perception
2013-02-20 06:39:47
在Java中使用小写字母表示变量名是个好习惯,例如'freckle',而不是'Freckle'。这有助于其他读者区分变量名称和大写的类别。 – 2013-02-20 06:42:56