【发布时间】:2022-11-18 01:00:22
【问题描述】:
Parse int 搞乱了我的文件扫描 我主要是尝试读取此 txt 文档中的第一个数字,并将其用作要在 for 循环中实现的数字。我的代码在不包含它的情况下运行良好,但我想用它来继续这个小项目。
{
int i=0;
while(inFile.hasNextLine()){
String line = inFile.nextLine();
//int num = Integer.parseInt(line);
if(line.toLowerCase().equals("basketball")){
AllSports.add(new Basketball(i));
}
if(line.toLowerCase().equals("football")){
AllSports.add(new Football(i));
}
for(Sports obj:AllSports){
obj.Score_Med();
obj.Score_Med();
}
i++;
}
}
我评论了 parseInt 行,我也试过 .nextInt,它仍然给我一个错误。我的 txt 文件目前看起来像这样:
3个 篮球 篮球 足球
我得到的错误是
File name?:
input.txt
Exception in thread "main" java.lang.NumberFormatException: For input string: "Basketball"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:665)
at java.base/java.lang.Integer.parseInt(Integer.java:781)
at Sport_Runner.main(Sport_Runner.java:24)
我的 txt 文件:
3
Basketball
Basketball
Football
第 24 行是 parseInt 行所在的位置。
【问题讨论】:
-
应该怎样“篮球”看起来像一个数字?
-
注意java命名约定。名称应该是驼峰式而不是蛇形,变量名应该以小写字符开头
-
您正在为文件中的每一行调用
Integer.parseInt(line)。由于只有第一行包含数字,因此所有后续行都将失败。您需要更改代码,使Integer.parseInt(line)仅用于文件的第一行。 -
我将把这个例子作为一个编辑包括在内,关于命名约定,那些变量和类名很遗憾是由我的教授制定的,但你仍然是对的。