nullによる初期化を回避せよ
以下は、改行で区切られた数値が保存されているファイル"hoge.txt"を読み込み、合計値を出力するコードである。このコードについて、streamのnullによる初期化を回避せよ。
import java.io.*; public class Foo { public static void main(String[] args) { File file = new File("hoge.txt"); FileInputStream stream = null; //この初期化を回避せよ。 try { stream = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); int sum = 0; String line; while((line = reader.readLine()) != null) { System.out.println("adding..." + line); sum += Integer.valueOf(line); } System.out.println(sum); } catch (NumberFormatException e) { System.err.println("ファイルの形式が変です。"); } catch (FileNotFoundException e) { System.err.println("ファイルがないようです。"); } catch (IOException e) { System.err.println("入出力に問題があるようです。"); } finally { if (stream != null) { try { stream.close(); } catch (IOException e) { System.err.println("ファイルを閉じられないようです。"); } } } } }
- http://d.hatena.ne.jp/PoohKid/20081205/1228490714
- "".equals(stringVariable) は改悪だろう - まちゅダイアリー(2008-11-30)
の関連です。Java屋さんならよくあるパターンだと思います。
…解答例は今から考えるけど、単純にいけるのか?これ?