2017-03-02 1 views
0

Ich soll einen Professor zum Ausbilder eines Kurses machen. Der Kommentar über der Methode gibt auch das Ziel an. Ich bin jedoch verwirrt, wenn ich darüber nachdenke. Ich bin neu in der Programmierung mit Java, also entschied ich mich zu überprüfen, ob der Professor im Kurs war, indem ich einen "instanceof" Vergleich machte. Gehe ich in die richtige Richtung oder habe ich etwas übersehen? Vielen Dank!Hinzufügen und Entfernen von Elementen

  • Nahe dem Ende I 2 andere Methoden hinzugefügt, die ich auf gerade kam, glaube ich, dass ich meine getStudents falsch umgesetzt. Die letzten beiden Methoden verlangen, dass ein Schüler hinzugefügt und entfernt wird. Ich bin mir nicht sicher, was das Schlüssel-Wert-Paar für den Schüler wäre.

    public class Course implementiert Comparable {

    /** 
    * course id (unique) 
    */ 
    private int id; 
    /** 
    * course name 
    */ 
    private String name; 
    /** 
    * course level 
    */ 
    private int level; 
    /** 
    * professor teaching the course, null if none 
    */ 
    private String professor; 
    /** 
    * students enrolled in the course (unique), empty if none 
    */ 
    private HashSet<String> students; 
    
    /** 
    * Create a course. Initially there is no professor or student for the 
    * course. 
    * 
    * @param id course id 
    * @param name course name 
    * @param level course level 
    */ 
    public Course(int id, String name, int level) { 
        this.id = id; 
        this.name = name; 
        this.level = level; 
        this.professor = null; 
        this.students = new HashSet<>(); 
    } 
    
    /** 
    * Get the course id. 
    * 
    * @return course id 
    */ 
    public int getId() { 
        return id; 
    } 
    
    /** 
    * Get the course name. 
    * 
    * @return course name 
    */ 
    public String getName() { 
        return name; 
    } 
    
    /** 
    * Get the course level. 
    * 
    * @return course level 
    */ 
    public int getLevel() { 
        return level; 
    } 
    
    /** 
    * Get the professor teaching the course. 
    * 
    * @return the professor, if none, null 
    */ 
    public String getProfessor() { 
        return professor; 
    } 
    
    /** 
    * Get the students enrolled in the course. 
    * 
    * @return the students, organized by ascending hash codes. if there are no 
    * students enrolled the list should be empty. 
    */ 
    public Collection<String> getStudents() { 
        return students; 
    } 
    
    /** 
    * Make a professor the instructor of this course. If another professor was 
    * teaching it, that information is lost. 
    * 
    * @param username the username of the professor 
    */ 
    public void addProfessor(String username) { 
    
    } 
    

    } /**

    • hinzufügen Schüler den Kurs, wenn sie nicht eingeschrieben sind,
    • in konstanter Zeit. *
    • @param Benutzername der Benutzername des Schülers
    • @return, ob der Student hinzugefügt wurde oder nicht */ public boolean addStudent (String username) {// TODO return false; }

    /**

    • einen Schüler aus dem Kurs entfernen, wenn sie eingeschrieben sind,
    • in konstanter Zeit. *
    • @param Benutzername der Benutzername des Schülers
    • @return wahr zu entfernen, wenn der Schüler entfernt wurde, falsch, wenn der Student nicht im Kurs ist */ public boolean removeStudent (String username) { // TODO Rückgabe false; }
+0

Der Kommentar für die 'addProfessor' Methode sagt, dass der vorherige Professor würde durch den neuen Professor überschrieben werden, so haben Sie eigentlich zu überprüfen Sie, ob der Professor schon im Kurs war? – badjr

+0

Sehen Sie sich für die Implementierung der Methoden zum Hinzufügen und Entfernen von Schülern die Methoden add und remove eines Set an. http://docs.oracle.com/javase/8/docs/api/java/util/Set.html –

Antwort

1

Sie verwenden das instanceof Schlüsselwort zu überprüfen, ob ein Objekt eines bestimmten Typs zur Laufzeit ist. In diesem Fall gibt der Kommentar an, dass, wenn ein Wert zuvor festgelegt wurde, dieser gerade verloren ist. Das bedeutet, dass Sie einfach den angegebenen Wert als Professor einstellen können, ohne irgendwelche Kontrollen zu tun

public void addProfessor(String userName) { 
    professor = userName; 
} 
+0

Würde das standardmäßig den vorherigen Professor entfernen, wenn es einen gab? –

+0

Ja, es würde einfach den vorherigen Wert überschreiben –

+0

Nicht sicher, ob Sie den Teil gesehen haben, den ich gerade hinzugefügt habe, aber könnten Sie erklären, wie Student ein HashSet sein könnte? Ich bin verwirrt, was die Schlüssel-Wert-Paare wären. –

1

Sie können die Getter auf professor rufen zu überprüfen, ob es bereits gesetzt ist.

public void addProfessor(String professor) { 
    if(this.getProfessor() == null || this.getProfessor().isEmpty()) { 
     this.setProfessor(professor); 
    } 
} 
+1

Der Kommentar der Methode besagt, dass es keine Rolle spielt, ob zuvor ein Wert als Professor festgelegt wurde. –

+0

@AaronDavis, ja. Ich denke, das ist das Problem, vor dem das OP steht. Deshalb hat er es als Kommentar zu der Methode. – VHS

+0

Es scheint, als hätten Sie einen zusätzlichen Parameter hinzugefügt und die Lücke entfernt. Gibt es eine andere Möglichkeit, dies zu implementieren, ohne die ursprüngliche Methode zu bearbeiten? Ich bin mir nicht sicher, ob mein Professor wir waren, um es irgendwie zu verändern. –

1

implementieren Sie einfach die Methode addProfessor -

public void addProfessor(String username) { 
    /* 
    This assignment will replace any other professor 
    who are teaching of this course. 
    If you assign the class variable **professor**, 
    when you call getProfessor(), that will return 
    username this professor. 
    */ 
    this.professor = username; 
} 
Verwandte Themen