У меня есть файл, который содержит много названий фильмов вместе с их годами, рейтинг из 5 звезд и длины. Я пытаюсь прочитать файл и сохранить названия, год, рейтинг и длину в качестве переменных. Проблема, с которой я столкнулся, заключается в моем коде для получения года. Код компилируется, но затем при запуске бросает исключение NumberFormatException, когда он попадает в фильм с несколькими годами (например, он указан как 2006-2009). Вот мой код.NumberFormatException при анализе целого числа
while((line = bufferedReader.readLine()) != null) {
//System.out.println(line);
for(int i = 0; i < line.length(); i++)
{
if(line.charAt(i) == ')' || line.charAt(i) == '-')//get year
{
yr = line.substring(yearStart,i);
year = Integer.parseInt(yr);
}
}
System.out.println(year);
}
Не следует line.charAt(i) == '-'
в моем заявлении if заботиться об этой проблеме?
EDIT: нижеприведенный код - год.
if(line.charAt(i) == '(')//get title
{
title = line.substring(0,i);
yearStart = i+1;
}
Файл форматируется так: title (year) | rating, length
К сожалению, я должен был включить, что первоначально.
EDIT # 2: Вот пример части файла, если это помогает
!Women Art Revolution (2010) | 3 stars, 1hr 22m
#1 Cheerleader Camp (2010) | 3 stars, 1hr 35m
$5 a Day (2008) | 3.4 stars, 1hr 37m
'night, Mother (1986) | 3.7 stars, 1hr 36m
'Til Death (2006-2009) | 3.7 stars, 4 Seasons//This is the one that causes the error
@Suicide Room (2011) | 3.4 stars, 1hr 51m
... And God Spoke (1993) | 2.8 stars, 1hr 22m
Могу ли я предложить вам использовать отладчик и посмотреть, что произойдет? –
Распечатайте строку, которую вы пытаетесь проанализировать, или посмотрите на трассировку стека исключений, чтобы увидеть, что на самом деле пытается проанализировать код. Это даст вам проблему и позволит вам найти решение. На самом деле, отправьте свой стек с вашим вопросом, пожалуйста. –
Что такое 'yearStart'? – joval