我不断收到错误消息错误:运行时java.lang.NullPointerException
。显然,我明白这表明当我引用某个具有空值的变量时,它应该具有某个值。我认为最好向您展示代码,以便我可以将其放在上下文中。
public class MarathonAdmin
{
private List<Runner> runners;
/**
* Constructor for objects of class MarathonAdmin
*/
public MarathonAdmin()
{
// initialise instance variables
List<Runner> runners = new ArrayList<>();
}
public void readInRunners()
{
String pathName = OUFileChooser.getFilename();
File aFile = new File(pathName);
Scanner bufferedScanner = null;
try
{
String runnerName;
int runnerAge;
String ageGroup;
Scanner lineScanner;
String currentLine;
bufferedScanner = new Scanner(new BufferedReader(new FileReader(aFile)));
while (bufferedScanner.hasNextLine())
{
currentLine = bufferedScanner.nextLine();
lineScanner = new Scanner(currentLine);
lineScanner.useDelimiter(",");
runnerName = lineScanner.next();
runnerAge = lineScanner.nextInt();
Runner runnerObject = new Runner();
if (runnerAge < 18)
{
ageGroup = "junior";
runnerObject.setAgeGroup(ageGroup);
}
else
if (runnerAge > 54)
{
ageGroup = "senior";
runnerObject.setAgeGroup(ageGroup);
}
else
{
ageGroup = "standard";
runnerObject.setAgeGroup(ageGroup);
}
runnerObject.setName(runnerName);
runners.add(runnerObject);
}
}
catch (Exception anException)
{
System.out.println("Error: " + anException);
}
finally
{
try
{
bufferedScanner.close();
}
catch (Exception anException)
{
System.out.println("Error: " + anException);
}
}
}
创建类实例的测试代码是:
MarathonAdmin ma = new MarathonAdmin();
ma.readInRunners();
正在使用一个名为Runners
的类,它已经使用其协议(protocol)进行了设置。该类可以编译,但 ma.readInRunner();
消息以错误结束。运行程序的文本文件没有错误。
我对编程有点陌生,因此发现很难解决问题。希望有人能帮助我。
最佳答案
在构造函数中它应该是
public MarathonAdmin()
{
// initialise instance variables
this.runners = new ArrayList<>();
}
而不是
public MarathonAdmin()
{
// initialise instance variables
List<Runner> runners = new ArrayList<>();
}
关于Java:列表、bufferedScanner 和错误:java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184787/