Java 使用BufferedReader将字符串转换为int

Java 使用BufferedReader将字符串转换为int,java,string,bufferedreader,text-parsing,Java,String,Bufferedreader,Text Parsing,我有这个代码,但当我试图运行它时,我得到了这个错误 线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“1” 每一行都包含一个数字、一个姓名、一封电子邮件和一个日期,因此每一行的第一个字符就是数字。坟墓[0]只是一个数字 List<Szemely> lista = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new FileReader(

我有这个代码,但当我试图运行它时,我得到了这个错误
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“1”
每一行都包含一个数字、一个姓名、一封电子邮件和一个日期,因此每一行的第一个字符就是数字。坟墓[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.");
        }
自动跳回

try (BufferedReader br = new BufferedReader(new FileReader(this.szemelyekcsv))) 
和错误。。。 谢谢大家的帮助。

As,并指出问题确实是一个或多个不可见字符(例如控制字符)

解决此问题的一种方法是使用正则表达式切掉所有非数字的内容:

int sor = Integer.parseInt(tomb[0].replaceAll("[^0-9]+", ""));
[^…]
=不是那些字符

[0-9]
=位数

+
=一次或多次

作为,并指出问题确实是一个或多个不可见字符(例如控制字符)

解决此问题的一种方法是使用正则表达式切掉所有非数字的内容:

int sor = Integer.parseInt(tomb[0].replaceAll("[^0-9]+", ""));
[^…]
=不是那些字符

[0-9]
=位数


+
=一次或多次

什么是坟墓[0]。尝试先打印它…你能提供一个例外吗这很奇怪,异常会给出字符串
“1”
,因为这应该是可解析的。例如,您可能不需要
文件
,一个
字符串
就足够了,只需在发布前尝试一下是否可以复制即可it@SantiBailors看起来它们是用“;”分隔的,他把它们分割成了坟墓阵列。@AxelH这可能是由于文件的保存格式造成的吗?我的意思是,有可能在他保存文件的格式中,我们有一个字符“1”,而不是编译器所知道的“1”?我希望您理解我的意思。正在尝试打印
0].length()
。我怀疑字符串中有一个非打印字符。例如,它可能是
“\ufeff1”
。尝试先打印它…你能提供一个例外吗这很奇怪,异常会给出字符串
“1”
,因为这应该是可解析的。例如,您可能不需要
文件
,一个
字符串
就足够了,只需在发布前尝试一下是否可以复制即可it@SantiBailors看起来它们是用“;”分隔的,他把它们分割成了坟墓阵列。@AxelH这可能是由于文件的保存格式造成的吗?我的意思是,有可能在他保存文件的格式中,我们有一个字符“1”,而不是编译器所知道的“1”?我希望您理解我的意思。正在尝试打印
0].length()
。我怀疑字符串中有一个非打印字符。例如,它可能是
“\ufeff1”
。或者,对输入字符串执行trim()操作就足够了,并且在某种程度上更安全,因为您仍然可以检测到错误输入。或者,对输入字符串执行trim()操作就够了,并且在某种程度上更安全,因为您仍然可以检测到错误输入。