У меня есть четыре класса. Класс проекта, класс учеников, класс ProjectFile и ProjectFrame JFrame.Значение не сохраняется в массиве?
ProjectFrame предназначен только для графического интерфейса, и я не коснулся этого.
Студенты и класс проекта являются конструкторами, и я их закодировал.
Теперь я пытаюсь реализовать класс ProjectFile, читая из текстового файла, а затем сохраняя данные для чтения. У меня возникают проблемы, так как я не уверен, почему экземпляр класса Project не хранит данные. Я посмотрел на свои петли, и я напечатал переменные, чтобы убедиться, что цикл на самом деле происходит. Он работает в первый раз, но когда я пытаюсь вызвать второй массив, он дает мне исключение NullPointerException. Поэтому я предполагаю, что он сохраняет значение как null, но это не должно быть так.
Это мой ProjectFile Класс
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package DecelAssignment;
import java.io.*;
/**
*
* @author Zane
*/
public class ProjectFile {
private static Project[] pJect;
private static Student[] sDent;
private static Project ja;
private static BufferedReader br;
public static void readData() {
File inputFile = new File("projects.txt");
try {
br = new BufferedReader(new FileReader(inputFile));
String s = br.readLine();
pJect = null;
pJect = new Project[Integer.parseInt(s)];
//System.out.println(s);
for (int i = 0; i < pJect.length; i++) {
s = br.readLine();
if (s == null) {
break;
} else {
String sLine[] = s.split(",");
int count = 3;
// for (int i2 = 0; i2 < Integer.parseInt(sLine[3]); i2++) {
// sDent[i2] = new Student(sLine[count+1], sLine[count+2], sLine[count+3], sLine[count+4]);
// count += 4;
// }
pJect[i] = new Project(sLine[0], sLine[1], sLine[2], sDent);
System.out.println(pJect[1].getTitle());
System.out.println(sLine[0]);
System.out.println(i);
}
}
} catch (IOException e) {
System.out.println("I caught an IO Exception1");
}
// } catch (NullPointerException e) {
// e.printStackTrace();
// System.out.println("I caught a Null Pointer Exception!");
//
// }
}
// public Project[] getProjectInfo() {
//
//
// return;
// }
public static void main(String[] args) {
readData();
}
}
Это текстовый файл, я читаю из
3
iPhone App,EEE,John Tan,1,P109520,Kelvin Tay,DBIT,M
iPad App,DMIT,Mark Goh,3,P106286,Felicia Wong,DIT,F,P101803,Rachel Chang,DIT,F,P100036,Lewis Poh,DBIT,M
Green Living,DMIT,Audrey Lim,2,P1,Peter Chua,DIT,M,P103287,Ng Ming Shu,DISM,F
Может кто-то пожалуйста, объясните мне, где я кодирования это неправильно? Я не могу понять.
EDIT:
Это проект класса
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package DecelAssignment;
/**
*
* @author Zane
*/
public class Project {
private String title, school, supervisor;
private Student[] stDent;
public Project() {
title = "";
school = "";
supervisor = "";
stDent = new Student[0];
}
public Student[] getStDent() {
return stDent;
}
public Project(String title, String school, String supervisor, Student[] stDent) {
this.title = title;
this.school = school;
this.supervisor = supervisor;
this.stDent = stDent;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getSupervisor() {
return supervisor;
}
public void setSupervisor(String supervisor) {
this.supervisor = supervisor;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Не улавливайте нулевые указатели. Нет смысла делать это – keyser
Что такое конструктор класса Project? Вы действительно присваиваете значения переменным-членам? –
Я знаю. Но я должен это сделать, потому что это требование для этого задания. – Zane