gpt4 book ai didi

java - 解析整数时出现 NumberFormatException

转载 作者:行者123 更新时间:2023-12-02 06:33:27 27 4
gpt4 key购买 nike

我有一个文件,其中包含许多电影标题及其年份、5 星评级和长度。我正在尝试读取该文件并将标题、年份、评级和长度存储为变量。我遇到的问题是在我的检索年份的代码中。该代码可以编译,但在运行时,当它到达具有多年的电影时(例如,它被列为 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);

}

我的 if 语句中的 line.charAt(i) == '-' 不应该解决这个问题吗?

编辑:下面的代码是yearStart的来源。

if(line.charAt(i) == '(')//get title
{
title = line.substring(0,i);
yearStart = i+1;
}

文件格式如下:标题(年份)|评级,长度抱歉,我本来应该把它包括在内。

编辑#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

最佳答案

找到年份后会发生什么?循环仍将运行到行尾,每次找到 )- 时都会尝试将内容解析为数字。

也许您应该在找到年份后退出循环。

                if(line.charAt(i) == ')' || line.charAt(i) == '-')//get year
{
yr = line.substring(yearStart,i);
year = Integer.parseInt(yr);
break; // year found, no point in looping more
}

或者也许您应该重置 yearStart 索引,以便可以解析第二年。

                if (line.charAt(i) == '-')
{
// parse first year
yr = line.substring(yearStart,i);
year = Integer.parseInt(yr);
yearStart = i + 1; // reset to parse second year
}
else if (line.charAt(i) == ')')
{
yr = line.substring(yearStart,i);
year = Integer.parseInt(yr);
break; // year found
}

关于java - 解析整数时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com