我正在尝试从文本文件中读取数字。
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,但我不知道如何到达根这个问题。
UTF8 bom
这里有三十个字符