java字符串到int没有做任何事情

时间:2015-04-21 00:28:05

标签: java

我有一个.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 "

2 个答案:

答案 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,因此它不会被错放的'空格'字符和其他常见的人为错误之类的东西脱轨。