将文件读取到Arraylist中,但参数列表的长度不同

时间:2019-04-05 02:52:16

标签: java arraylist file-io

我遇到了fileIO问题。基本上,有一个名为Student的类,有一个名为readStudent的方法,它将返回一个ArrayList对象。

我被要求读取一个文件,并用一个空格将它们分成三部分, 并且不允许使用扫描仪。

文件:

艾米·摩尔60

Chloe Scott 40

我的问题是:(1)由于Student类只有两个参数(String,Double),如何将两个String和一个Double添加到Student中? (2)提供的Student类没有toString()方法,如何打印出来?

如果有人可以帮助我,我将不胜感激。

Student的构造函数是:

 public Student(String sstudent, double mmark) 

readStudent:

 public static ArrayList<Student> readStudent(String fName){

到目前为止我所做的:

 ArrayList<Student> list=new ArrayList<Student>();
 try{

    BufferedReader br=new BufferedReader(new FileReader(fName));

     String line;

     while((line=br.readLine())!=null){


        String[] splitLine=line.split(" ");
        String first=splitLine[0];
        String second=splitLine[1];
        Double third=Double.parseDouble(splitLine[3]);

       Student stu=
            new Student(first,second));


        list.add(stu);


    }

  ...... 

  return list;

}

2 个答案:

答案 0 :(得分:0)

针对您的问题(1)

Student s = new Student(first + " " + second, third);
//by the way for third,it is not splitLine[3],it is splitLine[2]

针对您的问题(2)

ArrayList<Student> studentList = readStudent("YourFileName");
for(Student s : studentList)
    System.out.println(s.name + " " + s.grade);//don't know what are the variable names of Student class instances

答案 1 :(得分:0)

您在代码中有不同的选择: //问题1(请参见上面的第一个注释):
如果由于某种原因不需要第一,第二和第三,请选择选项1(这很有效)。

$img_tag

//问题2:
在java中,getter和setter用于访问类的属性(这是首选样式)。检查班上有没有学生然后使用。
在选项2中,您可以访问学生对象的方向全局变量。

public static ArrayList<Student> readStudent(String fName) throws FileNotFoundException, IOException{

        ArrayList<Student> list=new ArrayList<Student>();
        //try{

        BufferedReader br=new BufferedReader(new FileReader(fName));

        String line;

        while((line=br.readLine())!=null){

            //option1
            String[] splitLine=line.split(" ");
            Student stu = new Student(splitLine[0] + " " + splitLine[1], splitLine[2]);

            //option2
//            String first=splitLine[0];
//            String second=splitLine[1];
//            double third=Double.parseDouble(splitLine[3]);            
//            Student stu = new Student(first + " " + second, third); 


            list.add(stu);


        }

        //......

        return list;
    }