使用BufferedReader将字符串转换为int

时间:2017-03-17 13:23:46

标签: java string bufferedreader text-parsing

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

和错误...... 谢谢大家的帮助。

1 个答案:

答案 0 :(得分:2)

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

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

[^...]

[0-9] =不是那些字符

+ =数字

@Rule public IntentsTestRule<MainActivity> mIntentsRule = new IntentsTestRule<>( MainActivity.class); @Test public void test_backButton(){ onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click()); Espresso.pressBack(); } =一次或多次