从文件读取数据到对象?

时间:2012-05-07 23:09:43

标签: java filereader

关于我正在写的程序的另一个问题叫做“飞行”。在我的测试人员中,我正在从Flight类创建一个名为myFlight的对象。该对象有几个字段(航班名称,行驶里程等),但我正在做的是从一个名为input.txt的文件中读取数据并尝试将其放入我创建的对象中。我正在阅读的文件有五行信息。出于某种原因,我不能完全正确,如果有人能帮助我解决这个问题,我将非常感激。

这是包含Flight类所有字段的构造函数:

 public Flight(String name, int num, int miles, String origin, String destination)
  {
    Airlinename = name;
    flightnumber = num;
    numofmiles = miles;
    Origincity = origin;
    Destinationcity = destination;
  }

我的程序中我创建对象并尝试从文件中读取数据的部分。我在课堂上创建了一个空白构造函数,因为我不确定在创建它时是否应该在对象中放置任何东西。

Flight myFlight = new Flight();

    File myFile = new File("input.txt");
    Scanner inputFile = new Scanner(myFile);

    while (inputFile.hasNext())
    {
      myFlight = inputFile.nextLine();
    }

    inputFile.close();
  }
}

4 个答案:

答案 0 :(得分:1)

如果您使用特殊字符,则需要修改程序以便正确阅读它们。

Scanner inputFile = new Scanner(myFile, "UTF-8");

另一方面,如果文本文件包含以下内容,则对nextInt()的后续调用可能会生成运行时异常。

Gran España
1
1001
New York
Los Angeles

如果是这种情况,那么阅读应该是不同的。

myFlight = new Flight(inputFile.nextLine(), 
           Integer.parseInt(inputFile.nextLine()), 
           Integer.parseInt(inputFile.nextLine()), 
           inputFile.nextLine(), 
           inputFile.nextLine());

与任何程序一样,当添加更多条件来改进模型时,它需要越来越多的代码。

祝你好运。

答案 1 :(得分:0)

myFlight = new Flight(inputFile.next(), inputFile.nextInt(), 
           inputFile.nextInt(), inputFile.next(), inputFile.next());

答案 2 :(得分:0)

您无法直接将字符串行指定给对象,您需要将该行解析为部分并逐个为变量赋值。

答案 3 :(得分:0)

您的输入文字是如何组织的? Scanner的nextLine()方法返回一个String对象,绝对不能将其分配给Flight类型。有不同的方法可以在扫描仪中获取不同的值,如nextInt(), nextFloat()

基本上你可以这样尝试

Flight myFlight = new Flight();
myFlight.setFlightName(inputFile.next());
myflight.setMiles(inputFile.nextInt();

这只是一个示例,您需要检查input.txt文件中的格式。