java.lang.NumberFormatException:null当我尝试从.txt中读取数字时

时间:2017-04-14 15:53:24

标签: java null numbers

try {
        BufferedReader in = new BufferedReader(new FileReader("Encuestas/Encuesta_"+s+".txt"));
        try {
            this.id = Integer.valueOf(in.readLine());
            this.genero = in.readLine();
            this.fecha = in.readLine();
            this.n_preguntas = Integer.valueOf(in.readLine());
            for(int i = 0; i < this.n_preguntas; ++i){
                Integer tip = Integer.valueOf(in.readLine());
                String aux = "";

                aux = in.readLine();

当我尝试读取Integer tip = Integer.valueOf(in.readLine());它不起作用,我不明白为什么......我之前也这样做,它正在发挥作用。 这是错误:

5. Leer encuestajava.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.valueOf(Integer.java:766)
at prop.dominio.Encuesta.leer(Encuesta.java:134)
at prop.dominio.driver_encuesta.main(driver_encuesta.java:219)

3 个答案:

答案 0 :(得分:0)

只需像这样检查,

for(int i = 0; i < this.n_preguntas; ++i){   
    String line = null;
    if((line = in.readLine()) != null){
        Integer tip = Integer.valueOf(line);
        String aux = "";
    }

如果文件中只有十行,那么当您读取第11行时会出现此错误

答案 1 :(得分:0)

如果传递给它的值为null,则

t = np.random.rand(1,30,5) for i, n in zip(x_data, np.arange(len(x_data))): l = len(x_data) - 29 if n < l: t = np.vstack((t,x_data[n:n+30].reshape(1,30,5))) t = np.delete(t, 0) print(t[:2], t.shape) >>> [ 0.38009933 0.82223491] >>> (1691249,) 会抛出NullPointerException。检查文件的第一行是否为空。

答案 2 :(得分:0)

由于错误消息报告“null”,因此没有格式错误的输入,但没有(空行)。首先读取String值并对其进行测试是安全的,例如:

String intStr = in.readLine();

if(intStr != null) {
    int i = Integer.valueOf(intStr);
}
else {
    System.out.println("Empty line");
}

或者使用try-catch包围解析代码,这也有助于检测不能转换为整数的读取字符串。