Java:列表、bufferedScanner 和错误:java.lang.NullPointerException

标签 java exception nullpointerexception

我不断收到错误消息错误:运行时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/

相关文章:

java - 调用空对象的方法后没有出现空指针异常

java - 什么是NullPointerException,我该如何解决?

java - 我想从一个 Activity 调用两个 ContentView

java - hibernate的 "property-ref"元素标签中的 "one-to-one"属性有什么作用?

WPF DataTemplate 不抛出异常

java - 在 Java 中将未检查的异常包装为已检查的异常

php - 有什么问题或抛出新的异常?

android - TextView 返回 null

java - 数字格式问题,新手项目

java - 如何在 testng 工厂类中使用 spring Autowiring