-3

我正在尝试制作一个读取外部 .txt 文件并对其进行操作的程序。该文件有 5 组不同的数据,每组 4 行(2 为 int,2 为 string)。我需要使用 Scanner 类读取文件,创建一个对象来保存每组数据(编写一个将数据组存储为单个对象的类(我们称之为 ProgramData))。然后我需要创建一个 ProgamData 对象并将其放入一个 ArrayList 中,并对 5 个组中的每一个重复此操作。

我有一个文本文件,我用扫描仪将其读入(我通过在命令行上打印确认我做到了这一点)。我从那里完全迷失了。任何帮助都将不胜感激。

不是这样会有所帮助,但到目前为止,这是我的代码:

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Project1
{
    public static void main (String[] args) throws IOException 
    {

        File dataFile = new File("C:\\Users/data.txt");
        Scanner fileReader = new Scanner(dataFile);

        int firstLine = fileReader.nextInt();
        int secondLine = fileReader.nextInt();
        String whiteSpace = fileReader.nextLine();
        String thirdLine = fileReader.nextLine();
        String fourthLine = fileReader.nextLine();

        ArrayList<String> newArray = new ArrayList<String>();

    }


}   
4

2 回答 2

0

确保在读取输入文件时,使用 Scanner 类的 hasNext() 方法。它会检测文件中是否还有一行,因此您不会到达文件的末尾。像这样使用它

 // get file input
 // this will make sure there are still lines left within the 
 // file and that you have not reached the end of the file
 while(fileReader.hasNext()) {

     int firstLine = fileReader.nextInt();
    int secondLine = fileReader.nextInt();
    String whiteSpace = fileReader.nextLine();
    String thirdLine = fileReader.nextLine();
    String fourthLine = fileReader.nextLine();

}

您需要按照上面提供的内容进行您正在寻找的操作。

于 2013-09-24T23:10:05.303 回答
0

以下是您可以遵循的步骤:

  1. 创建一个名为 ProgramData 的类
  2. 制作一个将接受您的组数据的构造函数。--> 什么是构造函数
  3. 现在在 Project1 类中正确读取文件。-->扫描仪教程 使用扫描仪 java 读取 txt 文件

  4. 从文件中获取所有第一组数据后,将其传递给 ProgramData 类并创建类似的实例

      ProgramData pd1 = new ProgramData (/* list of parameter */)
    
  5. 将该 ProgramData 实例添加到 Arraylist,如下所示

     //  Define Arraylilst 
     ArrayList<ProgramData > list= new ArrayList<ProgramData >();
    
     // Do some operation like reading or collecting the data and creating object 
     // shown in step 4
    
     list.add(pd1); // add new object of group to list.
    

我希望这将帮助您实现目标。如果您有任何问题,请提出。祝你好运

于 2013-09-24T23:52:24.437 回答