为什么我的求和程序会抛出NumberFormatException?

时间:2015-11-10 03:04:16

标签: java file numberformatexception

我想从文件中读取数字并总结总数,但我似乎无法正确处理数据。它已成功输出数字,但未成功汇总。

我的代码:

import java.io.*;
import java.util.*;

public class Q1 {
    public static void main(String[] args) throws IOException {
        StringBuffer str = new StringBuffer();      
        FileWriter output = new FileWriter("number.txt");
        Random r = new Random();

        for (int i = 1; i < 101; i++) {
            str.append(r.nextInt(100) + " ");
        }
        output.write(str.toString());
        System.out.println(str.toString());
        output.close();
        FileReader reader = new FileReader("number.txt");
        BufferedReader input = new BufferedReader(reader);
        String line = input.readLine();
        int total = 0;

        while (line != null) {
            System.out.print(line);
            total += Integer.parseInt(input.readLine());
        }
        System.out.println(total);
    }
}

堆栈跟踪:

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Q1.main(Q1.java:42)

1 个答案:

答案 0 :(得分:0)

您不要在输出中附加结束行字符。 试试这个片段:

    StringBuffer str = new StringBuffer();

    FileWriter output = new FileWriter("number.txt");

    Random r = new Random();
    for (int i = 1; i < 101; i++) {

        str.append(r.nextInt(100)).append('\n');

    }
    output.write(str.toString());
    System.out.println(str.toString());
    output.close();

    FileReader reader = new FileReader("number.txt");
    BufferedReader input = new BufferedReader(reader);

    String line;
    int total = 0;

    while ((line = input.readLine())!=null) {

        total += Integer.parseInt(line);
    }
    System.out.println(total);

如果输出看起来很奇怪,请检查输出的创建位置。这通常是你会发现问题的地方。还添加了一些小的更改,让您了解一种不同的方式,可以让您的生活更轻松。