Integer.parseInt() 对于使用 BufferedReader 从一个文件而不是另一个文件读取的某些数字抛出 NumberFormatException

问题描述 投票:0回答:1

我正在尝试从文本文件中读取数字。

metro.txt
的第一行包含:

376 933
0000 Abbesses
0001 Alexandre Dumas

testnum.txt
的前几行包含:

444 555
6666 flowers
8888 pumpkin patch

这是我的代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class test {
    public static void main(String[] args) {
        try {
            FileReader input = new FileReader("metro.txt");
            BufferedReader reader = new BufferedReader(input);

            String raw_line = reader.readLine();
            String[] split_line = raw_line.split(" ", 2);

            int num_vertices = Integer.parseInt(split_line[0]);
            int num_edges = Integer.parseInt(split_line[1]);

        } catch (FileNotFoundException ex) { // catch filereader
            System.out.println(ex);
        } catch (IOException ex) { // catch bufferedreader
            System.out.println(ex);
        }
    }
}

当我在文件读取器参数中使用“metro.txt”运行它时,出现错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "376"
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:668)
        at java.base/java.lang.Integer.parseInt(Integer.java:786)
        at test.main(test.java:15)

而当我用“testnum.txt”运行它时,我没有得到这样的错误。我被提供了“metro.txt”作为作业的一部分,并自己创建了“testnum.txt”,只能认为某种文本编码导致了这种情况。

我认为这与 bufferedreader 如何从“metro.txt”读取有关,因为当我尝试将 split_line[0] 与相同的字符串“376”进行比较时,它返回 false,但我不知道如何到达根这个问题。

java integer bufferedreader filereader parseint
1个回答
0
投票

UTF8 bom

这里有三十个字符

© www.soinside.com 2019 - 2024. All rights reserved.