Java 标记构造函数的ArrayList属性

Java 标记构造函数的ArrayList属性,java,Java,因此,我有一个Java类,它具有以下属性,包括setter和getter等: public class Student implements Comparable<Student> { //Student attributes protected String firstName; protected String lastName; protected String major; protected String idNo; protected ArrayList<Stri

因此,我有一个Java类,它具有以下属性,包括setter和getter等:

public class Student implements Comparable<Student> {

//Student attributes
protected String firstName;
protected String lastName;
protected String major;
protected String idNo;
protected ArrayList<String> courseTaken;
protected int credits;
protected double grade;

public Student(){

}
//constructor
public Student(String firstName, String lastName, String major, String idNo, ArrayList<String> courseTaken, int credits, double grade)
{
    this.firstName = firstName;
    this.lastName = lastName;
    this.major = major;
    this.idNo = idNo;
    this.courseTaken = courseTaken;
    this.credits = credits;
    this.grade = grade;
}
我认为这是可能的。显然不是。我该怎么做


来自代码中的注释:
这就是问题所在

当tempCourse是一个
ArrayList
tempCourse
是一个字符串时,Student将所有令牌作为字符串接收,但在构造函数中,courseTaken需要一个
ArrayList
。显然,这是行不通的(没有从单个对象到这些对象的ArrayList的自动转换)


您必须将此字段和构造函数参数设置为字符串(因此每个学生只有一门课程),或者将tempCourse标记拆分为单个字符串(使用另一个额外的分隔符,例如分号),将它们填入ArrayList并将该ArrayList传递给构造函数。

您遇到的问题是解析代码与文件中的数据根本不匹配。您似乎试图读取所有数据,就好像它在一行上一样,然后拆分它,就好像这一行包含7个标记:

String[] tokenize = fileRead.split(",");

String tempFirstN= tokenize[0];
String tempLastN = tokenize[1];
String tempMajor = tokenize[2];
String tempIdNo = tokenize[3];
String tempCourse = tokenize[4];
int tempCredits = Integer.parseInt(tokenize[5]);
double tempGpa = Double.parseDouble(tokenize[6]);  // !! 7 tokens !!
但您的文件根本不是这样构造的:

Jones,Mary,903452
4342,2.5,A
3311,C
-999
Martin,Joseph,312345
4598,3,C
1122,3
-999
相反,文件表示中的每个学生似乎都包含几行,实际上是一个可变的数字,第一行只包含3个标记,第二行(可能)包含3个标记,接下来的几行显示什么,大家都可以猜测


要解决这个问题,您必须完全理解文件结构,然后相应地更改解析代码,包括使用内部循环读取文本,直到出现“-999”。

“我认为这是可能的。显然不是。”
——基于什么信息?大部分取决于文本文件的结构,一些你还没有展示给我们的东西。啊,你问题的一部分隐藏在评论中——请不要这样做。把问题的主要内容放出来让大家看。tempCourse是如何存储在文件中的?是文本文件吗?请使您的问题更加完整,以便能够回答。您的代码和文件似乎根本不匹配。每个数据元素都由多行组成,但您似乎试图将其解析为一行——为什么?这可能就是问题所在。当我昨晚遇到错误时,我才开始编写这个。我会寻找另一个解决办法。
String[] tokenize = fileRead.split(",");

String tempFirstN= tokenize[0];
String tempLastN = tokenize[1];
String tempMajor = tokenize[2];
String tempIdNo = tokenize[3];
String tempCourse = tokenize[4];
int tempCredits = Integer.parseInt(tokenize[5]);
double tempGpa = Double.parseDouble(tokenize[6]);  // !! 7 tokens !!
Jones,Mary,903452
4342,2.5,A
3311,C
-999
Martin,Joseph,312345
4598,3,C
1122,3
-999