我正嘗試使用我在this page的底部找到的一小段代碼。下面是我爲它創建了一個類的代碼:Java嘗試並捕獲IOException異常問題
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;
public class LineCounter {
public static int countLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.close();
return cnt;
}
}
我的目標是計算文本文件的行,這個數字存儲爲一個整數,然後用我的主類是整數。在我的主要課程中,我嘗試了幾種不同的方式來實現這一點,但是(作爲一名新程序員)我錯過了一些東西。下面是我想的第一件事:
String sFileName = "MyTextFile.txt";
private int lineCount = LineCounter.countLines(sFileName);
有了這次嘗試,我得到的錯誤「未報告的異常java.io.IOException異常;必須捕獲或聲明被拋出。」我不明白爲什麼我得到這個,因爲我可以看到異常是在我的「countLines」方法中聲明的。我嘗試在我發佈的最後一段代碼下面使用try catch塊,但這也不起作用(我認爲我沒有做到這一點)。這裏是我嘗試趕上嘗試:
String sFileName = "MyTextFile.txt";
private int lineCount;{
try{
LineCounter.countLines(sFileName);
}
catch(IOException ex){
System.out.println (ex.toString());
System.out.println("Could not find file " + sFileName);
}
}
請告訴我的方式!在此先感謝您的幫助!
答案在技術上是正確的(OP簡單地忘記將值賦給引用),但那不是一個** static **初始化塊。這只是一個初始化塊:) – BalusC 2010-03-07 20:15:56
你的第一個代碼的作品完美!我太親近了:)你的第二個代碼也可以工作,但是NetBeans告訴我while循環是空的。該程序仍編譯並運行正常,所以我想這是可以接受的? – ubiquibacon 2010-03-07 20:16:59
這完全忽略了內容。你實際上只對線的數量感興趣。你也可以使用'BufferedReader'和'int count'結合在循環內增加。 – BalusC 2010-03-07 20:18:02