Java - 如何使用bufferedReader和Scanner将数据读入列表?

时间:2017-03-27 13:17:04

标签: java bufferedreader

我有一个名为Runner的类,如下所示:

public class Runner 
{
   private static int nextNumber= 1;

   private int number;       
   private String name;      
   private String ageGroup;  
   private int time;         


   public Runner()
   {
      super();
      this.name = "";
      this.ageGroup = "standard";
      this.time = 0;
      this.number = nextNumber++;
    }

它还包括标准的getter和setter方法。 在另一个类中,我试图编写一个方法,从文本文件中读取数据并将数据分配给列表。我的方法目前看起来像这样:

   public void readInRunners()
   {
      String pathname = OUFileChooser.getFilename();
      File aFile = new File(pathname);
      Scanner bufferedScanner = null;
      List<Runner> runners = new ArrayList<>();

      try
      {
         String name;
         int age;
         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(",");
            name = lineScanner.next();
            age = lineScanner.nextInt();

            if(age < 18)
            {
               ageGroup = ("junior");
            }

            else if(age >= 55)
            {
               ageGroup = ("senior");
            }

            else if(age >= 18 && age < 55)
            {
               ageGroup = ("standard");
            }

            runners.add(new Runner(name, ageGroup));
         }
      }

      catch (Exception anException)
      {
         System.out.println("Error: " + anException);
      }

      finally
      {
         try
         {
            bufferedScanner.close();
         }
         catch (Exception anException)
         {
            System.out.println("Error: " + anException);
         }
      }

我在这一行收到错误:

runners.add(new Runner(name, ageGroup));

我知道由于不相容的论点而没有编译,但我不确定如何用这句话来表达。

非常感谢任何建议。

3 个答案:

答案 0 :(得分:0)

我认为你应该添加一个构造函数

public Runner(String name, String age)
   {
     this.name = name,
     this.age= age;
   }

你只有空构造函数

public Runner(){// some code}

答案 1 :(得分:0)

你需要有一个参数化的构造函数,就像在你的跑步者类

中一样
public Runner(String name,String ageGroup)
   {
      this.name = name;
      this.ageGroup = ageGroup;
      this.time = 0;
      this.number = nextNumber++;
    }

答案 2 :(得分:0)

只需将这些参数添加到runner类的构造函数中:

  public Runner(String name, String ageGroup)
   {
      super();
      this.name = name;
      this.ageGroup = ageGroup;
      this.time = 0;
      this.number = nextNumber++;
    }