このために、オブジェクト指向の Java を実行する BlueJ を実行しており、JVM 7.1 をアクティブにしています。
わかりましたので、学位の申請をしなければなりませんが、問題が発生しています。イテレータが私の単一配列システムを台無しにして以来、「先生」が私の三重配列システムを使用させてくれたことに感謝しています。
残念ながら、私の問題を解決するためにインターネット上で何かを見つけることができませんでした...
基本的に、「学生」を配列に追加しようとすると、オブジェクトはすべてのフィールドで null になります。そして、それらを変更する方法がわかりません。
私の配列はひし形表記を使用しています。次のようにします。
private ArrayList<Student> students;
これは私が現在使用している配列の形式であり、さらに2つの配列があります。
private ArrayList<CollegeEmployee> staff;
private ArrayList<Faculty> members;
私は単一の配列を使用するようにアドバイスされましたが、言われたように、イテレータがそれを台無しにしてしまい、それを修正できる限り、配列がいくつあるか気にしません笑。
プログラムは while ループ内で実行され、ユーザーに特定のコマンドの文字を入力するように求めます。ユーザーが「s」と入力すると、学生が配列に追加され、ここで問題が発生します。オブジェクトにはnull値が与えられ、それらを変更する方法がわかりません...以下は、オブジェクトコンストラクター
private void addStudent()
{
Student b = new Student(firstName, lastName, address, postCode, phoneNumber, gradePointAvg, selectedCourse);
students.add(b);
}
ユーザーがプログラムを終了したときに配列が出力されると、ターミナル ウィンドウから次の入力が得られます。
ヌル、ヌル、ヌル、0、0 0 ヌル
私の質問は、オブジェクト b の値を指定して null の値をオーバーライドするにはどうすればよいかということです。ところで、値はユーザーが入力する必要があり、配列の宣言で事前に設定する必要はありません。
お時間をいただきありがとうございます:)
これは私がコードを嫌いにさせます xD
編集:
学生クラスのコンストラクタとフィールドは次のとおりです。
private String title;
public double gradePointAvg;
public String selectedCourse;
/**
* Constructor for objects of class Student
*/
public Student(String firstName, String lastName, String address, int postCode, int phoneNumber, double gradePointAvg, String selectedCourse)
{
super(firstName, lastName, address, postCode, phoneNumber);
this.title = title;
this.gradePointAvg = gradePointAvg;
this.selectedCourse = selectedCourse;
}
Person スーパークラス コンストラクター:
public String firstName;
public String lastName;
public String address;
public int postCode;
public int phoneNumber;
/**
* Constructor for objects of class Person
*/
public Person(String firstName, String lastName, String address, int postCode, int phoneNumber)
{
// initialise fields
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.postCode = postCode;
this.phoneNumber = phoneNumber;
}
上記の addStudent メソッドは、student コンストラクターを呼び出し、次に person コンストラクターを呼び出します。はい、プロジェクトの制限として、このようにする必要があります。
そして、プライベートはローカルスコープであるため、フィールドが保護されているため、フィールドを今のところ公開しました。
私のコードをチェックしてくれてありがとう..私の先生がもっと良かったらいいのに >.<