Java 是否可以从“返回或以某种方式访问数据”;课程“;从这个方法?
我正在做我的第一个Java编程作业,我还有一个问题。我将课程[]放在学生[]中,但现在似乎遇到了NullPointerException错误,我不知道为什么Java 是否可以从“返回或以某种方式访问数据”;课程“;从这个方法?,java,methods,return,Java,Methods,Return,我正在做我的第一个Java编程作业,我还有一个问题。我将课程[]放在学生[]中,但现在似乎遇到了NullPointerException错误,我不知道为什么 public Student[] analyzeData() { Scanner inputStream = null; try { inputStream = new Scanner(new FileInputStream("Programming Assignment 1 Data.txt"));
public Student[] analyzeData() {
Scanner inputStream = null;
try {
inputStream = new Scanner(new FileInputStream("Programming Assignment 1 Data.txt"));
} catch (FileNotFoundException e) {
System.out.println("File Programming Assignment 1 Data.txt could not be found or opened.");
System.exit(0);
}
int numberOfStudents = inputStream.nextInt();
int tuitionPerHour = inputStream.nextInt();
Student[] students = new Student[numberOfStudents];
for (int i = 0; i < numberOfStudents; i++) {
String firstName = inputStream.next();
String lastName = inputStream.next();
int studentID = inputStream.nextInt();
String isTuitionPaid = inputStream.next();
int numberOfCourses = inputStream.nextInt();
Course[] courses = new Course[numberOfCourses];
for (i = 0; i < numberOfCourses; i++) {
String courseName = inputStream.next();
String courseNumber = inputStream.next();
int creditHours = inputStream.nextInt();
String grade = inputStream.next();
Course currentCourse = new Course(courseName, courseNumber, creditHours, grade);
courses[i] = currentCourse;
}
Student currentStudent = new Student(firstName, lastName, studentID, isTuitionPaid, numberOfCourses, courses);
students[i] = currentStudent;
}
return students;
}
其中课程有关于课程的信息,学生有关于学生的信息。文件的自然对象映射将是
学生
对象的列表,每个对象都包含课程
对象的列表。courses
数组应存储在学生对象中。文件的自然对象映射将是student
对象的列表,每个对象都包含courses
对象的列表。courses
数组应该存储在student对象中。Hmm,我这样做的方式是在内存中有一个表示解析文件的数据结构。所以基本上看起来是这样的:
public class RegistrationFile{
private Students[] students;
private Courses[] courses;
public void loadFromFile(File f){
//do your logic to parse the file
//and store the results in the appropriate data members
}
public Students[] getStudents(){
return students;
}
public Courses[] getCourses(){
return courses;
}
}
然后,从其他代码创建注册文件对象的实例,并调用
loadFromFile()
来加载数据,然后再尝试访问任何内容。Hmm,这样做的方法是在内存中有一个表示已解析文件的数据结构。所以基本上看起来是这样的:
public class RegistrationFile{
private Students[] students;
private Courses[] courses;
public void loadFromFile(File f){
//do your logic to parse the file
//and store the results in the appropriate data members
}
public Students[] getStudents(){
return students;
}
public Courses[] getCourses(){
return courses;
}
}
然后,您可以从其他代码创建注册文件对象的实例,并在尝试访问任何内容之前调用
loadFromFile()
加载数据。除了设置正确的对象来表示学生/课程之外(正如@ChrisThompson所做的),您希望能够读取任意数量的学生/课程记录,对吗
您需要相应地解析文件。例如,当您点击一个空行时,您知道您正在转到下一条记录(第一条记录除外)。还可以利用这样一个事实,即第一行是学生(或者如果它有5个代币),后续行是她的课程(或者如果该行有4个代币)
该单元应包括整个输入文件循环中的一次迭代。在循环的一次迭代中创建一个给定的学生对象和他的课程对象。除了设置正确的对象来表示学生/课程(正如@ChrisThompson所做的那样),您还希望能够读取任意数量的学生/课程记录,对吗 您需要相应地解析文件。例如,当您点击一个空行时,您知道您正在转到下一条记录(第一条记录除外)。还可以利用这样一个事实,即第一行是学生(或者如果它有5个代币),后续行是她的课程(或者如果该行有4个代币) 该单元应包括整个输入文件循环中的一次迭代。创建一个给定的学生对象,他的课程对象循环一次。我会向
student
添加一个数组(或者更好的是,数组列表或映射),其中包含学生正在学习的课程
在你所做的事情中,你如何决定哪些课程适合哪些学生
尝试添加以下实例变量
private List<Course> courses;
阅读文件可能是一件非常痛苦的事情,至少目前来说,你所拥有的还可以。实例化Course
的循环将包括调用student.addCourse(Course)
。那你就是金色的
请注意,这是一个高层次的概述,因此这里可能有一些学习内容供您参考。只需发回,我们将提供帮助。我会在学生
中添加一个数组(或者更好的是,添加一个数组列表或一个映射),其中包含学生正在学习的课程
在你所做的事情中,你如何决定哪些课程适合哪些学生
尝试添加以下实例变量
private List<Course> courses;
阅读文件可能是一件非常痛苦的事情,至少目前来说,你所拥有的还可以。实例化Course
的循环将包括调用student.addCourse(Course)
。那你就是金色的
请注意,这是一个高层次的概述,因此这里可能有一些学习内容供您参考。请回复,我们会提供帮助。首先,如果您使用eclipse(我强烈建议您使用),请尝试ctrl+shift+f,这是一种自动格式,可以让您的代码更易于阅读,直到您养成自己使用良好格式的习惯。您能指定发生
NullPointerException
的位置吗?尽管如此,我敢打赌,与扫描仪对象相关的所有代码都应该封装在try…catch
块中,因为如果找不到文件,inputStream
将为空。首先,如果您使用的是eclipse(我强烈推荐),请尝试ctrl+shift+f,它是自动格式化的,在您养成自己使用良好格式化的习惯之前,它可以使您的代码更易于阅读。您能否指定发生NullPointerException
的位置?尽管如此,我敢打赌,与扫描仪对象相关的所有代码都应该封装在try…catch
块中,因为如果找不到文件,inputStream
将为空。我不是下选者,但我可能是因为你的答案离题,与所问问题无关,并对文件的分配/结构做出毫无根据的假设。有一个包含学生列表的文件,然后是一个课程列表,没有隐式对象映射或选择忽略该映射的文件读取函数,这是完全合理的。您实际查看过该文件和用于读取该文件的代码吗?每个学生行包含多个课程,以下几行是该学生的课程(每门课程一行)。这还远远没有脱离主题:因为这是数据的结构,所以对象应该是这样设计的。返回学生名单将返回一切:学生和他们的课程。这是一种关系,sa