我想從我的方法中輸出文件掃描器對象。這是一個學校作業,我特別指示不要拋出任何異常,而是使用try/catch來代替。該任務要求命令行提示用戶輸入要掃描的文件。如果文件不存在,我們應該告訴用戶,然後再次提示他們輸入文件。如果該文件存在,則該方法返回掃描該文件的掃描器對象。如何使用try/catch避免在java中拋出FileNotFoundException
我的代碼有效,但它不乾淨。它涉及2種方法。這是到目前爲止我的代碼:
public static Scanner getInputScanner (Scanner console) {
File inputFile = null;
Scanner input = null;
try {
inputFile = getFile(inputFile, console);
input = new Scanner (inputFile);
return input;
} catch (FileNotFoundException e) {
try {
return input = new Scanner (getFile (inputFile, console));
} catch (FileNotFoundException f) {
System.out.println("An error has occured.");
return input;
}
}
}
public static File getFile (File inputFile, Scanner console) {
System.out.println("Enter input file: ");
inputFile = new File (console.nextLine());
while (!inputFile.exists()) {
System.out.println("File does not exist.");
System.out.print("Enter input file: ");
inputFile = new File (console.nextLine());
}
return inputFile;
}
與代碼的問題是,輸出如下所示:
輸入輸入文件:
文件不存在。
輸入輸入文件:
然後它正在等待用戶的輸入。我不希望輸出在最後一行之前有兩行代碼。
任何人都可以解釋爲什麼我的代碼輸出這兩行嗎? 另外,是否有一個簡單的解決方案來獲取輸入文件而不拋出FileNotFoundException?
謝謝!
您能告訴我們調用這些方法的代碼嗎? –