每行包含三部分信息,各部分之间用空格隔开:名称(字符串类型),ID(字符串类型)和gpa(双精度类型)。

我正在尝试编写一个程序,该程序读取整数N和文件名,然后从输入文件读取N行数据,并将数据存储在Student的ArrayList中。您可以假定在此问题中给出了Student类。我在代码上遇到了一些麻烦,并遇到了13个错误。如果有人可以帮助,那就太好了!

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Students {

   public static void main(String[] args) {
       ArrayList<Student> students = new ArrayList<Student>(); //this will be a list of all the students in the file
       //we will add to this list as we read in students from the file
       //using an ArrayList allows us to easily add students when we don't know how many there will be
        Scanner stu = new Scanner(System.in);
        Student s = null;

        /*Part two: get the file name and intialize the file reader*/
        try{
            System.out.print("Enter filename: "); //prompt the user for the file name
            filename = in.readLine(); //get the filename- user types this on the keyboard

            fin = new BufferedReader(new FileReader(filename)); //create the file reader
            //if the filename is invalid, an error message will be printed and the program terminated
        }catch(Exception e){
            e.printStackTrace();
        }

        /*Part three: read all of the student data from the file*/
        s = getStudent(fin); //call the getStudent function to get the next student from the file
        while(s != null){ //keep going until all students have been read
            students.add(s); //add the new student to our ArrayList of students
            s = getStudent(fin); //get the next student
        }


        /*Part four: print out the results*/
        for(Student a: students){ //loop through all the students in our list
            System.out.println(a.getFirstName()); //print out name
            System.out.println(a.getId()); //print out ID number
            System.out.println("Gpa: " + a.getGrade()); //print out gpa



    }
 }
}

Test case

Enter an integer: 3
Enter a filename: students.txt
[Wally 1234567 4.5, John 7654321 3.0, Susan 1212121 4.5]

最佳答案

这是我想出的并在本地运行它的方法。

package tes;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;

class Student {

    private String name;
    private String ID;
    private Double gpa;
    public Double getGpa() {
        return gpa;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", ID=" + ID + ", gpa=" + gpa + "]";
    }
    public void setGpa(Double gpa) {
        this.gpa = gpa;
    }
    public String getID() {
        return ID;
    }
    public void setID(String ID) {
        this.ID = ID;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
public class Students {


   public static void main(String[] args) {

       try{


           ArrayList<Student> students = new ArrayList<Student>();
           Scanner scanner = new Scanner(System.in);
           System.out.print("Enter filename: "); //prompt the user for the file name
           String fileName = scanner.next();
           File file = new File(fileName);

            if (!file.exists()) {
                throw new FileNotFoundException("file not exits");
            }

            BufferedReader reader = new BufferedReader(new FileReader(file));
            String currentline = "";
            while ((currentline = reader.readLine()) != null) {

                String[] linearray = currentline.split(",");
                for (int i=0;i<linearray.length;i++) {
                        String record = linearray[i];
                        String[] r1 = record.split(" ");
                        Student student = new Student();
                        student.setName(r1[0]);
                        student.setID(r1[1]);
                        student.setGpa(Double.parseDouble(r1[2]));
                        students.add(student);
                }

            }

            System.out.println(students);



        }catch(Exception e){
            e.printStackTrace();
        }

      }
}


输入文件和数据:


沃利1234567 4.5,约翰7654321 3.0,苏珊1212121 4.5
莎莉934567 3.75,布朗7654321 4.0,莉莉2212121 4.5


输出:

Enter filename: C:\Users\yc03ak1\Desktop\testing.txt
[Student [name=Wally, ID=1234567, gpa=4.5], Student [name=John, ID=7654321, gpa=3.0], Student [name=Susan, ID=1212121, gpa=4.5], Student [name=Sally, ID=934567, gpa=3.75], Student [name=Brown, ID=7654321, gpa=4.0], Student [name=Lilly, ID=2212121, gpa=4.5]]


HTH ..

08-06 17:59