使用 BufferedReader 将字符串转换为 int

String to int with BufferedReader

我有这个代码,但是当我尝试 运行 它时,我得到了这个错误 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))) 

还有错误... 谢谢大家的帮助。

正如pooyan, AxelH and VGR所指出的,问题确实是一个或多个不可见字符(例如控制字符)。

解决这个问题的一种方法是使用正则表达式删除所有不是数字的内容:

int sor = Integer.parseInt(tomb[0].replaceAll("[^0-9]+", ""));

[^...] = 不是那些字符

[0-9] = 位数

+ = 一次或多次