什麼是正確的方式來使用finally塊來關閉我所在的文件:event.dat。如果你能幫助我理解這一點,我將不勝感激。我從字面上花了4個小時來移動東西,玩代碼並在網上尋找答案,但無濟於事。代碼在沒有這個部分的情況下效果很好,但我需要知道它對未來的實例是如何工作的。謝謝你,有一個美好的一天!如何在Java中正確使用try-catch-finally塊?
我有這一塊的問題:
finally{
fstream.close();
}
其中位於下面的代碼:
String answer;
String letter;
String inType = "";
double inAmount = 0;
double amount;
description();
GironEventClass newInput = new GironEventClass();
try{
File infile = new File("event.dat");
Scanner fstream = new Scanner(infile);
System.out.println("File Contents ");
while(fstream.hasNext())
{
inAmount = fstream.nextInt();
inType = fstream.next();
try{
newInput.donations(inType, inAmount);
}
catch(IllegalArgumentException a){
System.out.println("Just caught an illegal argument exception. ");
}
finally{
fstream.close();
}
}
System.out.println("Total Sales: " + newInput.getSale());
System.out.println("Donations: " + newInput.getDonated());
System.out.println("Expenses: " + newInput.getExpenses());
}
catch (FileNotFoundException e){
System.out.println("\nEvent.dat could not be opened. ");
}
do{
System.out.print("Are there any more items to add that were not in the text file? (Type 'Y' or 'N')");
answer = keyboard.next();
if (("Y".equals(answer)) || ("y".equals(answer)))
{
letter = inLetter();
amount = inAmount();
newInput.donations(letter, amount);
}
}while (("Y".equals(answer)) || ("y".equals(answer)));
newInput.display();
}
public static String inLetter(){
Scanner keyboard = new Scanner(System.in);
String result;
String resultTwo;
System.out.println("T = Tiket Sales");
System.out.println("D = Donations");
System.out.println("E = Expenses");
System.out.print("Please input an identifier ");
result = keyboard.nextLine();
resultTwo = result.toUpperCase();
return resultTwo;
}
public static double inAmount(){
Scanner keyboard = new Scanner(System.in);
double result;
System.out.println("Please input an amount ");
result = keyboard.nextInt();
if(result <= 0.0){
System.out.print("Please input a positive and non-zero amount ");
result = keyboard.nextInt();
}
return result;
}
public static void description(){
System.out.println("The program will ask you what amount is being spent on what.");
System.out.println(" ex: expenses, ticket sales, and profts.");
System.out.println("This program will help determine whether the event generated or lost money.");
}
您是否收到任何錯誤?如果是這樣,他們是什麼? –
@NikG這是我收到的錯誤: 異常線程 「main」 java.lang.IllegalStateException:掃描儀關閉 \t在java.util.Scanner.ensureOpen(Scanner.java:1070) \t是java。 util.Scanner.hasNext(Scanner.java:1334) \t at gironjavaassn6.GironJavaAssn6.main(GironJavaAssn6.java:35) – Manny