4

toString()内のオブジェクトのメソッドを使用しようとしてArrayListいますが、期待値の代わりにメモリ アドレスを出力していました。クラスを英語に翻訳しました。何か忘れていたらすみません。わからない場合はクエストを行ってください。私のコードを見てみましょう:

スケジュール クラス (私はゲッターとセッターを抑制しました):

static Professor professor;
static Room room;
static Classroom classroom;

public String toString() {
        return "Schedule [getProfessor()=" + getProfessor() + ", getRoom()="
                + getRoom() + ", getClassRoom()=" + getClassRoom() + ", getClass()=" + getClass() + ", hashCode()="
                + hashCode() + ", toString()=" + super.toString() + "]";
}

学校

ArrayList<Professor> professor = new ArrayList<Professor>();
ArrayList<Room> room = new ArrayList<Room>();
ArrayList<Classroom> classroom = new ArrayList<Classroom>(); 
public ArrayList<Schedule[][]> sched = new ArrayList<Schedule[][]>();

私は遺伝的アルゴリズムを使用しています(現時点ではそれについて学んでいるので、あまり知りません)、ここに私の「人口ジェネレーター」があります:

人口

public static void generatePopulation(School school){

        // Shuffle the arraylist for generate a random population
        Collections.shuffle(school.getProfessor());
        Collections.shuffle(school.getClassroom());
        Collections.shuffle(school.getRoom());

        Schedule[][] sched1 = new Schedule[1][1];

        // Generate population (just a little test to see if it works)
        sched1[0][0].addEverything(school.getProfessor().get(0), school.getClassroom().get(0), school.getRoom().get(0));
        school.sched.add(sched);

主要

 (... school and associations created ...)
    Population.generatePopulation(school);
    System.out.println(school.getSched().isEmpty()); // it returns false, that is, isn't empty
    System.out.println(school.getSched().get(0).toString()); 
    // returns "[[Lentidades.Schedule;@40914272" (entidades = name of my package)

では、なぜ期待値ではなくメモリ位置を受け取っているのでしょうか? 何も忘れていないと思いますが、このコードに何か変なところがありましたら、質問を送ってください。残りのコードを説明/貼り付けます。

4

1 に答える 1