我試圖創建一個程序,它將通過文件數組進行搜索並將唯一文件名存儲到新的文件數組中並返回該新的數組,並且僅將重複項放入一次(如果有的話)。我的代碼運行通過,但不會將值存儲到我創建的新文件陣列中,該陣列沒有設置長度。當我調用它時,它只返回一個空數組。我設置它的方式是檢查是否有任何重複,如果是,則存儲重複一次,如果不存在,則只存儲該值並繼續。問題在於,一旦它通過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