【发布时间】:2017-08-09 01:57:34
【问题描述】:
我有这段代码,但是当我尝试运行它时,我得到了这个错误
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
每行包含一个数字、姓名、电子邮件和日期,因此每行中的第一个字符是数字。 tomb[0] 只是一个数字
List<Szemely> lista = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(this.szemelyekcsv))) {
String line;
while ((line = br.readLine()) != null) {
String[] tomb;
tomb = line.split(";");
int sor = Integer.parseInt(tomb [0]);
DateTimeFormatter sima = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate szul = LocalDate.parse(tomb[3], sima);
lista.add(new Szemely(sor, tomb[1], tomb[2], szul));
}
} catch (FileNotFoundException ex) {
System.out.println("Nem tudom megnyitni a 'be.txt' fájlt.");
} catch (IOException ex) {
System.out.println("Hiba a 'be.txt' fájl olvasása közben.");
}
当程序到达这一行时
int sor = Integer.parseInt(tomb [0]);
自动跳回
try (BufferedReader br = new BufferedReader(new FileReader(this.szemelyekcsv)))
和错误... 谢谢大家的帮助。
【问题讨论】:
-
什么是 tomb[0] .. . 尝试先打印出来...
-
你能提供一个minimal reproducible example吗?奇怪的是异常给出了字符串
"1",因为这应该是可解析的。例如,您可能不需要File,一个String就足够了,在发布之前尝试一下是否可以重现 -
@SantiBailors 似乎它们是用“;”分隔的然后他把它们分成墓阵列。
-
@AxelH 是否有可能是文件保存格式引起的问题?我的意思是有可能在他保存文件的格式中,我们有字符“1”,对于编译器来说不是“1”?我希望你明白我的意思。
-
尝试打印
tomb[0].length()。我怀疑字符串中有一个非打印字符。例如,它可能是"\ufeff1"。
标签: java string bufferedreader text-parsing