线程 "main" java.lang.NumberFormatException 中的异常:对于输入字符串:“1”
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
所以我正在读取一个 CSV 文件,如果所有内容都是字符串,它就可以正常工作。但是当我尝试从文件中解析整数时,它不再起作用。
Scanner scanner = new Scanner(new File("top250.csv"));
scanner.useDelimiter(",");
while(scanner.hasNextLine()){
String line = scanner.nextLine();
System.out.println(line);
String[] parts = line.split(",");
String rank = parts[0].trim();
System.out.println(rank);
int real_rank = Integer.parseInt(rank);
}
输出:
1, The Shawshank Redemption ,9.2,1994
1
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at movieranker.MovieRanker.createData(MovieRanker.java:45)
at movieranker.MovieRanker.main(MovieRanker.java:25)
java.lang.NumberFormatException
表示应用程序已尝试将字符串转换为其中一种数字类型,但该字符串没有合适的格式。
出现这个异常是因为在只输入数字的情况下,实际生成的字符串可能有一些不可见的字符,而不是"1"
。因此,格式不正确。一个简单的修复方法是:
行更改自:
int real_rank = Integer.parseInt(rank);
至:
rank = rank.replaceAll("[^0-9]+", "")
int real_rank = Integer.parseInt(rank); //remove everything non-digit from your input, including \n symbols
您好,我想是因为您的数据文件包含 UTF-8 BOM.
您有三种选择:
编辑您的源数据文件以删除 BOM,或者您可以添加一些代码来处理 BOM。对于第一个选项,使用 Notepad++ 并删除 BOM。
或者使用可以处理它的 Libarie .. 我喜欢 http://www.univocity.com/pages/about-parsers
所以我正在读取一个 CSV 文件,如果所有内容都是字符串,它就可以正常工作。但是当我尝试从文件中解析整数时,它不再起作用。
Scanner scanner = new Scanner(new File("top250.csv"));
scanner.useDelimiter(",");
while(scanner.hasNextLine()){
String line = scanner.nextLine();
System.out.println(line);
String[] parts = line.split(",");
String rank = parts[0].trim();
System.out.println(rank);
int real_rank = Integer.parseInt(rank);
}
输出:
1, The Shawshank Redemption ,9.2,1994
1
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at movieranker.MovieRanker.createData(MovieRanker.java:45)
at movieranker.MovieRanker.main(MovieRanker.java:25)
java.lang.NumberFormatException
表示应用程序已尝试将字符串转换为其中一种数字类型,但该字符串没有合适的格式。
出现这个异常是因为在只输入数字的情况下,实际生成的字符串可能有一些不可见的字符,而不是"1"
。因此,格式不正确。一个简单的修复方法是:
行更改自:
int real_rank = Integer.parseInt(rank);
至:
rank = rank.replaceAll("[^0-9]+", "")
int real_rank = Integer.parseInt(rank); //remove everything non-digit from your input, including \n symbols
您好,我想是因为您的数据文件包含 UTF-8 BOM.
您有三种选择: 编辑您的源数据文件以删除 BOM,或者您可以添加一些代码来处理 BOM。对于第一个选项,使用 Notepad++ 并删除 BOM。 或者使用可以处理它的 Libarie .. 我喜欢 http://www.univocity.com/pages/about-parsers