JavaRush /Java блог /Архив info.javarush /Проблема с методом Integer.parseInt(String s)
nanoezhik
41 уровень

Проблема с методом Integer.parseInt(String s)

Статья из группы Архив info.javarush
Уважаемые форумчане! Может кто из вас сталкивался с проблемой использования метода: Integer.parseInt(String s). Проблема с методом Integer.parseInt(String s) - 1Проблема в следующем: метод физически на моем компьютере не хочет преобразовывать некоторые строки в числа. Имеем строку "1568", метод выдает ошибку:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1568"
Последний раз с такой проблемой столкнулся при решении задачи level19.lesson05.task03. Считываю строку из файла и разбиваю ее на массив строк методом .split(" "), а затем преобразую строки в числа (если это возможно, если нет - перехватываю исключение и ничего не делаю), первое число в строке почему-то игнорируется. Кто-нибудь сталкивался с таким, или кто знает в чем беда? p.s. Компилятор на сайте мой код пропускает!
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
nanoezhik Уровень 41
29 октября 2014
Вот что нарыл: проблема была всегда в начале файла, т.е. если число нужно прочитать из начала файла. Дело все в том, что многие текстовые редакторы (вроде как не все) добавляют в начало файла маркер, позволяющий легко определить кодировку файла. Я выщемил вот этот символ: (char) 65279. Как узнать его истинное лицо не знаю, есть только его интовое представление. Проблема решается заменой char на char, т.е. .replace((char) 65279, ' '). После чего спокойно разбиваем split — ом строку и выделяем числа. Буду рад если кому-то помог.
blacky Уровень 23
29 октября 2014
Обычно юзают статический метод String.trim() когда парсят число Integer.parseInt(s.trim())
String.split("\\s") — тоже хорошее решение.
Кстати, как читаешь из файла? По байтам или построчно?
CynepHy6 Уровень 34
29 октября 2014
в начале строки находится какой нибудь магический байт который не дает правильно распарсить число.
попробуй использовать .split("\\s")
может поможет