无法使用ArrayList <java>加载数据文件

时间:2018-09-06 03:43:20

标签: java file arraylist

我目前正在为学校编程工作。我已经在代码上工作了几个小时,并且在网上搜索答案也没有运气。

基本上,我得到了八个文本文件,其中包含几行数据,如下所示:

Henrietta   Andersen    8   10  9   10  10  9   7   9   6   10  65  80  89  24  73  95  59  78  115

(顺序为名字,姓氏,十个家庭作业等级,五个程序等级,两个测试等级和一个最终等级)

我没有使用ArrayList的经验,我一直在网上寻找类似的项目,但是无法获取任何要打印到输出文件的数据。我正在尝试在输出文件中打印学生的名字,以检查其是否正常运行,但是唯一打印出的是我的标头“ FirstName”。我无法从loadArray中获取任何要打印的数据。

这是我到目前为止在Main中完成的工作:

package program1;

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.io.PrintStream;

public class Main {

    private static ArrayList<Student> stud = new ArrayList<>();

    public static void main(String[] args) {

        PrintStream oFile = null;

        try {
            oFile = new PrintStream(new File("output.csv"));
            oFile.println("FirstName");
            for(int i = 0; i < stud.size(); i++)
            {
                 oFile.println(stud.get(i).getStudFirstName());
            }
        } catch (FileNotFoundException ex) {
            System.err.println("File not found");
            System.exit(1);
        }
    }

    public static void loadArray() {

        Scanner fileIn = null;

        try {
            fileIn = new Scanner(new File("CS140-001.txt"));
        } catch (FileNotFoundException ex) {
            System.err.println("Error opening file");
            System.exit(1);
        }

        int totalHomeworks = 9;
        int totalPrograms = 5;
        int totalTests = 1;

        int[] hmwGrade = new int[totalHomeworks];
        int[] programGrade = new int[totalPrograms];
        int[] testGrade = new int[totalTests];

        while (fileIn.hasNext()) {

            Student student;

            String fName = fileIn.next();
            String lName = fileIn.next();

            for (int i = 0; i < totalHomeworks; ++i) {
                hmwGrade[i] = fileIn.nextInt();
            }

            for (int i = 0; i < totalPrograms; ++i) {
                programGrade[i] = fileIn.nextInt();
            }

            for (int i = 0; i < totalTests; ++i) {
                testGrade[i] = fileIn.nextInt();
            }

            int finalGrade = fileIn.nextInt();

            student = new Student(fName, lName, new Grades(hmwGrade, programGrade, testGrade, finalGrade));
            stud.add(student);
        }

    fileIn.close();

    }
}

1 个答案:

答案 0 :(得分:0)

在开始将其打印到输出文件之前,未向数组列表stud加载数据。

在开始打印到输出文件之前,请致电loadArray()

public static void main(String[] args) {

    PrintStream oFile = null;
    try {
        oFile = new PrintStream(new File("output.csv"));
        oFile.println("FirstName");

        // Load the array here with student's data
        loadArray();
        for(int i = 0; i < stud.size(); i++)
        {
             oFile.println(stud.get(i).getStudFirstName());
        }
    } catch (FileNotFoundException ex) {
        System.err.println("File not found");
        System.exit(1);
    }
}