HashMap <Integer, Object> присваивает одинаковые значения всем ключам - PullRequest
0 голосов
/ 01 мая 2018

Итак, у меня есть этот код, который создает объект под названием student, который принимает строки для имени и специальности и отслеживает общее количество кредитов и баллов качества для расчета GPA. Я пытаюсь создать HashMap, чтобы иметь возможность искать студентов по ключу (идентификатору студента) и возвращать значения, хранящиеся в классе «Студенческий план». Но мой код назначает одно и то же значение всем ключам, последний ученик вошел в HashMap. Вот код, за которым следует текущий вывод. Обратите внимание, что это упрощенная версия моего полного кода, просто чтобы продемонстрировать мою проблему. Спасибо всем, кто хочет помочь!

import java.util.HashMap;

public class Test {
public static class Student {
    static private String name;
    static private String major;
    static private int totalCredits;
    static private int totalQP;

    public Student (String name, String major) {
        this.name = name;
        this.major = major;
        this.totalCredits = 0;
        this.totalQP = 0;
    }

    public static void courseCompleted (int grade, int creditHours) {
        totalQP += grade;
        totalCredits += creditHours;
    }

    @Override
    public String toString () {
        float GPA;
        if (totalCredits != 0) {
            GPA = (float) totalQP/totalCredits;
        } else {
            GPA = (float) 4.0;
        }
        return "Student name: " + name + "\nStudent Major: " + major
                + "\nStudent GPA: " + GPA;
    }
}

public static void main (String [] args) {
    HashMap<Integer, Student> studentDatabase = new HashMap();

    studentDatabase.put(1234, new Student("Default", "Default"));
    studentDatabase.put(7623, new Student("Phyllis Jones", "English"));
    studentDatabase.put(8729, new Student("Cletus Smith", "History"));
    studentDatabase.put(7321, new Student("Betty Booth", "Computer Science"));
    studentDatabase.put(3242, new Student("Samuel Seybright", "History"));
    studentDatabase.put(9823, new Student("Oscar Blue", "English"));
    studentDatabase.put(2341, new Student("Sally Grief", "Copmputer Science"));
    studentDatabase.put(8321, new Student("Jacques Matchel", "Mathematics"));

    System.out.println(studentDatabase.entrySet());
}
}

Выход: [8321 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0, 1234 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4.0, 2341 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0, 7623 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0, 8729 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0, 7321 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0, 3242 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4.0, 9823 = Имя студента: Жак Матчел Студенческая специальность: математика Средний балл студента: 4,0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...