Ошибка чтения из файла: java.lang.NumberFormatException - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть файл file.txt, который содержит такие строки:

  • 461 480 0
  • 461 494 0
  • 461 496 0
  • 461 524 0
  • 461 527 0
  • 461 535 0
  • 461 551 0

461 \ t480 \ t0 они разделены вкладками.

Я хочу прочитать этот файл, используя Java

String[] splits = line.split("\t");
int userID = Integer.parseInt( splits[0] );

Это дает мне ошибку:

Exception in thread "main" java.lang.NumberFormatException: For input string: "461"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)

Как я могу исправить эту ошибку?

Ответы [ 3 ]

0 голосов
/ 30 ноября 2011

попробуйте отформатировать ваш файл следующим образом

  • 461-480-0
  • 461-494-0
  • 461-496-0
  • 461-524-0
  • 461-527-0
  • 461-535-0
  • 461-551-0
line = line.replaceAll("\\s+","");
String [] splits = line.split("-");
int userID= Integer.parseInt(splits[0]);
0 голосов
/ 30 ноября 2011

Если ваш файл содержит разрывы строк в стиле Windows, можете ли вы преобразовать его в разрывы строк в стиле Unix (большинство текстовых редакторов могут сделать это), а затем попытаться прочитать его снова.Также, пожалуйста, проверьте, происходит ли исключение в первой строке, или оно правильно анализирует одну строку и выдает исключение во второй строке.

Если все остальное не удается, вы должны попытаться отладить свой код.Если вы используете eclipse для разработки, которая должна быть действительно простой, просто установите точку останова на строку после вызова метода split() и проверьте значение split[0].

0 голосов
/ 30 ноября 2011

попробуйте это.

String[] splits = line.split("\t");
int userID = Integer.parseInt( splits[0].trim() );

Я думаю, что поскольку вы разделяете на '\ t', пробелы также идут с числами, поэтому у "461" могут быть пробелы в конце.Однако Splits[0] не должно быть null, иначе придет исключение Null Pointer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...