ユーザーが学生番号でログインして選択する投票システムを作成しています。誰かが投票すると、再度ログインすることはできません。オブジェクトを作成しました。学生番号の文字列と、その学生番号がすでに投票したかどうかのブール値を含む学生 (両方とも非公開)。このタイプの動的配列を作成して、スキャナーを使用して読み取られるテキスト ファイルから特定の数の学生を受け入れるようにしました。ただし、オブジェクト配列内に学生番号の文字列を入力しようとすると、NullPointerException が発生します。スキャナはテキスト ファイルから情報を読み取っていますが、その情報を Student オブジェクトのプライベート文字列に入れようとするとエラーが発生します。文字列の配列を使用すると、すべて正常に機能しますが、そうではありません 誰かがすでに投票したかどうかを示すブール値があります。私はプログラミングにまったく慣れていないので、何が問題なのかわかりません。誰かが何が間違っているのか、どのように修正できるのか説明してもらえますか?
テキスト ファイルが読み取られ、配列が設定されるメソッド ( students はグローバルに宣言および構築され、最初はサイズが 0 です):
public static void getStudentNumbers(){
int a = 0;
while(fileReader.hasNext()){
if (a >= students.length) {
int newSize = 1 + students.length;
Student[] newData = new Student[newSize];
System.arraycopy(students, 0, newData, 0, students.length);
students = newData;
}
students[a].setStudentNumber(fileReader.nextLine()); //Error occurs here
a++;
}
}
学生オブジェクト:
public class Student{
private Boolean hasVoted = false;
private String studentNumber = "";
public void setVotedStatus(Boolean voted){
hasVoted = voted;
}
public void setStudentNumber(String studentNum){
studentNumber = studentNum;
}
public Boolean getVotedStatus(){
return hasVoted;
}
public String getStudentNumber(){
return studentNumber;
}
}
エラー:
java.lang.NullPointerException
at VotingSystem2_0.getStudentNumbers(VotingSystem2_0.java:279)
at VotingSystem2_0.main(VotingSystem2_0.java:245)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
前もって感謝します!