我目前正在爲一個迷你搜索引擎的學校編寫一個應用程序。在執行時,它將包含爲參數的文本文件的內容編入索引。我沒有用之前的try
和catch
方法,而我們只是給這個代碼作爲我們的節目包括:瞭解Java的嘗試/趕上
Scanner inputFile = null;
try {
inputFile = new Scanner(new File("dog.txt"));
} catch (FileNotFoundException fe) {
System.out.println("File not found!");
}
我已經創建了通過ARGS循環,並增加了一個新對象的方法找到每個唯一字的數組。問題是catch
方法似乎仍然執行,每當我運行該應用程序,我不能解決原因。這是輸出:
dog.txt被索引...文件未找到!
被索引的cat.txt ...文件未找到!
我已經包括下面的方法。如果有人感冒可能指出我要出錯的地方,那會很好。
static void createIndex(String[] args) {
for(int i = 0; i < args.length; i++) {
Scanner inputFile = null;
try {
System.out.print((args[i]) + " being indexed ... ");
inputFile = new Scanner(new File(args[i]));
while(inputFile.hasNext()) {
boolean isUnique = true;
String newWord = inputFile.next().trim().toLowerCase();
for(int j = 0; j < uniqueWords; j++)
if(newWord.equals(wordObjects[j].getWord())) {
wordObjects[j].setFile(args[i]);
isUnique = false;
}
if(isUnique) {
wordObjects[uniqueWords] = new WordIndex(newWord, args[i]);
uniqueWords++;
}
}
System.out.print("done");
} catch(FileNotFoundException fe) {
System.out.println("File not found!");
}
}
}
謝謝大家。我以爲是因爲它打印了它找到的文件的名字......顯然它是從我寫的參數中得到的。所以移動這些文件並交換了你們所指出的兩行代碼,並且工作正常! – 2009-08-09 07:34:57
我建議儘可能使用盡可能少的代碼來包裝try塊。在這種情況下,這並不重要,但由於您只希望在前幾行中引發FileNotFoundException,請將try塊放在那裏,而不是放在循環的整個內容中。如果沒有找到該文件,則嘗試執行循環的其餘部分沒有多大意義,因此可以在catch塊中放置「continue」。另一方面,太多的「繼續」代表意大利麪代碼,所以要小心。 – MatrixFrog 2009-08-09 19:26:19
例外是告訴你沒有找到文件。那麼你知道那些'.txt'文件在哪裏嗎?你可以在當前目錄中看到它們嗎? – 2009-08-09 07:17:30