0

ファイルに読み取る行がなくなるまで、各整数を次の行の整数に追加するJavaプロジェクトに取り組んでいます。したがって、それを追加できるようにするには、行に Integer.parseInt(...) を使用してから追加する必要があります。PS : for ループは、ファイルのヘッダーを含む 2 行をスキップします。そして、すべての文字列は Integer.parseInt() が受け入れる数値を参照しています。

完全な例外エラーは次のとおりです。

Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at prog.Result(prog.java:93)
at prog.main(prog.java:56)

例外が発生するコードは次のとおりです。

public static void Result() throws IOException
    {
        FileReader fileReader = new FileReader(dir+"/"+log_file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        int i;
        for (i=0;i<=2;++i)
        {
            bufferedReader.readLine();
        }
        int result =0;
        while (bufferedReader.readLine() != null)
        {
            result += Integer.parseInt(bufferedReader.readLine());

        }
        System.out.println("The Result Is : " + result);

    }
4

3 に答える 3

5

これがあなたの問題だと思います:

    while (bufferedReader.readLine() != null)
    {
        result += Integer.parseInt(bufferedReader.readLine());

    }

あなたはreadLine()そこに2回電話しています。初期結果を変数に格納し、その結果を再利用する必要がありparseInt()ます。

于 2013-09-13T02:54:58.500 に答える
5

このブロックは、実際には 1 行ではなく2行を読み取っています。

while (bufferedReader.readLine() != null)
{
    result += Integer.parseInt(bufferedReader.readLine());
}

while条件チェックで最後の行が読み取られたときにエラーが発生し、読み取るnull行がもうないため、ブロックの内部が読み取られます。

次のようにループを記述するのは慣用的です。

String line;
while ((line = bufferedReader.readLine()) != null)
{
    result += Integer.parseInt(line);
}
于 2013-09-13T02:55:00.053 に答える
0

まず、ファイル内のデータをチェックして、すべての行が数値であることを確認する必要があります。

2番目:以下の行でキャッチを試す必要があります

try {
    result += Integer.parseInt(bufferedReader.readLine());
} catch(Exception ex)
于 2013-09-13T02:57:40.067 に答える