我有一个.txt文件,其中包含如下所示的数据。我想要做的是逐行读取文件然后将其转换为int并将结果显示到屏幕。
第一个系统出线工作正常,没问题。然而,第二个甚至不打印到屏幕。我猜他们的字符串转换为int会出现问题吗?
try (BufferedReader br = new BufferedReader(new FileReader("f.txt")))
{
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); //does show
int change2Int = Integer.parseInt(line);
System.out.println(change2Int); //doesnt show
mp.getDataForDisplay(line);
}
}
catch (Exception expe)
{
expe.printStackTrace();
}
文件:
0
1
4
2
5
它产生的错误是数字格式异常错误。
java.lang.NumberFormatException: For input string: "0 "
答案 0 :(得分:1)
您的输入字符串是" 0"这意味着有一个空间。在解析之前使用trim()
。 trim()
用于删除空格等空格。
例如:
int change2Int = Integer.parseInt(line.trim());
答案 1 :(得分:1)
你得到的NumberFormatException
说明了问题所在。您的输入文件中还包含一些尾随空白字符,这会导致解析失败。
在尝试解析之前,阻止前导/尾随空格绊倒解析的一种简单方法是trim()
字符串,如:
int change2Int = Integer.parseInt(line.trim());
作为一般原则,作为输入是一个好主意to be permissive about what your program accepts,因此它不会被错放的'空格'字符和其他常见的人为错误之类的东西脱轨。