2017-02-21 2 views
-4

Ich versuche, eine Kursteilnehmer-Arraylist zu einer Kursklasse zu erstellen, so dass die Arraylist erhöht wird, wenn ein Kursteilnehmer hinzugefügt wird. Dies ist der Code, den ich bisher habe:Erstellen einer Studenten-Arraylist zum Hinzufügen von Kursteilnehmern zur Kursklasse Java

import java.util.ArrayList; 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author Saj 
*/ 
public class Course { 
    private String courseName; 
    private int noOfStudents; 
    private String teacher; 
    public static int instances = 0; 

    //Getters 
    public String getCourseName(){ 
     return this.courseName; 
    } 
    public int getNoOfStudents(){ 
     return this.noOfStudents; 
    } 
    public String getTeacher(){ 
     return this.teacher; 
    } 

    //Setters 
    public void setCourseName(String courseName){ 
     this.courseName = courseName; 
    } 
    public void setNoOfStudents(int noOfStudents){ 
     this.noOfStudents = noOfStudents; 
    } 
    public void setTeacher(String teacher){ 
     this.teacher = teacher; 
    } 

    /** 
    * Default constructor. Populates course name, number of students with defaults 
    */ 
    public Course(){ 
     instances++; 
     this.noOfStudents = 0; 
     this.courseName = "Not Set"; 
     this.teacher = "Not Set"; 
    } 

    /** 
    * Constructor with parameters 
    * @param noOfStudents integer 
    * @param courseName String with the Course name 
    * @param teacher String with the teacher 
    */ 
    public Course(int noOfStudents, String courseName, String teacher){ 
     this.noOfStudents = noOfStudents; 
     this.courseName = courseName; 
     this.teacher = teacher; 
    } 

} 

Ich bin mir nicht sicher, wie Sie die Array-Liste implementieren. Kann mir jemand in die richtige Richtung zeigen?

+0

"Im nicht sicher, wie die Array-Liste zu implementieren." Sie implementieren die ArrayList nicht. Es ist eine integrierte Sammlung. Erklären Sie es wie folgt: Liste Studenten = neue ArrayList (); '. Dies setzt voraus, dass Sie tatsächlich die Student-Klasse erstellt haben. – Arqan

+3

Haben Sie die Dokumentation gelesen und/oder Tutorials/Guides über 'ArrayList' angeschaut? – tnw

+0

@Arqan wo deklariere ich es? – donk2017

Antwort

0

Fügen Sie einfach Attribut Ihrer Klasse

List<Student> students; 

In Konstruktoren initialisieren diese Liste:

students = new ArrayList<>(); 

Methode erstellen Schüler hinzufügen zur Liste:

public boolean addStudent(Student stud) { 
    if (stud == null || students.contains(stud)) { 
     return false; 
    } 
    students.add(stud); 
    return true; 
} 

Prüfen Sie auch https://docs.oracle.com/javase/8/docs/api/java/util/List.html für Dokumentation der Liste. Frage ist, möchten Sie Studenten in Konstruktor hinzufügen? Wenn ja, fügen Sie Parameter zu Ihrem Konstruktor

public Course(int noOfStudents, String courseName, 
       String teacher, List<Student> students){ 
    this.noOfStudents = noOfStudents; 
    this.courseName = courseName; 
    this.teacher = teacher; 
    this.students = new Arraylist<>(students); 
} 
+0

Siehe die Antwort, die ich mit dem angepassten Code geschrieben habe, aber ich erhalte einen Fehler. – donk2017

+0

Welchen Fehler bekommen Sie? Und wo haben Sie List Attribut deklariert? es fügen Sie direkt nach dem 'public static int Instanzen = 0;' nur privat 'Liste Studenten geben;' + Ein Tipp, nicht 'Arraylist studentList = new Arraylist () verwenden;' Verwendung 'List studentList = new ArrayList ();' statt – Nayriva

1

Mit einem wenig Forschung Sie viele Tutorials finden zu erreichen, was Sie beabsichtigen, aber ich werde versuchen, Sie in dem richtigen Weg einzuschlagen nur damit Sie einen answear haben und irgendwo anfangen.

  1. Was ist ein Student? Ist es ein String, der nur einen Namen enthält, ist es ein Objekt, das einen Schüler darstellt, der einige Eigenschaften haben kann? Ein Beispiel

    public class Student{ 
        private int number; 
        private String name; 
        private int age; 
        // Basically anything that makes sense for a student. 
    
        public Student(int number, String name, int age){ 
         this.number = number; 
         this.name = name; 
         this.age = age; 
        } 
    
        // .... Getters and Setters. 
    } 
    
  2. Sie benötigen einen Platz ist jeder Schüler hinzugefügt, um den Kurs zu speichern, ist das, was die Arraylist

    List<Student> students = new ArrayList<Student>(); 
    Student foo = new Student(23, "Foo", 22); 
    students.add(foo); // This is how you add to a List (in this case a List of Student objects and more precisely an ArrayList of Students). 
    

Sie müssen halten für das heißt

die Liste ist in Ihrer Kursklasse als Instanzvariable, und fügen Sie eine Methode, in der Sie einen Schüler übergeben können und innerhalb der Methode alles, was Sie haben, ist zu Ihrer Liste der Schüler hinzufügen, können Sie sogar einige Validierung, wenn Sie möchten.

Wenn Sie mehr Zweifel haben, suchen Sie zuerst nach einer Lösung, bevor Sie Fragen stellen, die leicht gefunden werden können. Hier sind einige Referenzen:

Java List

Java ArrayList

EDIT so, wie Sie Ihre Schüler hinzufügen, ist fast fertig, aber Sie haben einen Fehler und auch die Liste der Studenten nur innerhalb des Konstruktors befindet, Dies bedeutet, dass Sie die Liste nicht zum Speichern von Schülern außerhalb verwenden können.

Im Folgenden finden Sie den richtigen Code

/** 
* Constructor with parameters 
* @param noOfStudents integer 
* @param courseName String with the Course name 
* @param teacher String with the teacher 
*/ 
public Course(int noOfStudents, String courseName, String teacher){ 
    this.studentList = new ArrayList<Student>(); // The declaration is in above in your class, as an instance variable. 
    this.courseName = courseName; 
    this.teacher = teacher; 
} 
ArrayList<Student> studentList; // You can move this so it sits above besides your other variables, but it will also work like this. 
public boolean addStudent(Student student){ 
    if (student==null || studentList.contains(student)) { // You had Student.contains, wich will give an error because Student (class) doesnt have a static method named contains. 
     return false; 
    } 
    studentList.add(student); // you had the same problem here, you had Student.add(student), wich is wrong and it would not compile. 
    return true; 
} 

Stellen Sie sicher, dass Sie die Student-Klasse erstellt haben, und es ist ohne Fehler.

Getestet und funktioniert Code, es ändern, um Ihre Bedürfnisse genauer zu erfüllen

import java.util.ArrayList; 


public class Course { 
    private String courseName; 
    private int noOfStudents; 
    private String teacher; 
    public static int instances = 0; 
private ArrayList<Student> studentList; 

    //Getters 
    public String getCourseName(){ 
     return this.courseName; 
    } 
    public int getNoOfStudents(){ 
     return this.noOfStudents; 
    } 
    public String getTeacher(){ 
     return this.teacher; 
    } 

    //Setters 
    public void setCourseName(String courseName){ 
     this.courseName = courseName; 
    } 
    public void setNoOfStudents(int noOfStudents){ 
     this.noOfStudents = noOfStudents; 
    } 
    public void setTeacher(String teacher){ 
     this.teacher = teacher; 
    } 

    /** 
    * Default constructor. Populates course name, number of students with defaults 
    */ 
    public Course(){ 
     instances++; 
     this.noOfStudents = 0; 
     this.courseName = "Not Set"; 
     this.teacher = "Not Set"; 
    } 

    /** 
    * Constructor with parameters 
    * @param noOfStudents integer 
    * @param courseName String with the Course name 
    * @param teacher String with the teacher 
    */ 
    public Course(int noOfStudents, String courseName, String teacher){ 
     this.studentList = new ArrayList<Student>(); 
     this.courseName = courseName; 
     this.teacher = teacher; 
    } 

    public boolean addStudent(Student student){ 
     if (student==null || studentList.contains(student)) { 
      return false; 
     } 
     studentList.add(student); 
     return true; 
    } 

    public void printStudents(){ 
    for(Student s : studentList) 
      System.out.println(s.getName() + ", with " + s.getAge() + " year(s)"); 
    } 

public static class Student{ 
     private int number; 
     private String name; 
     private int age; 
     // Basically anything that makes sense for a student. 

     public Student(int number, String name, int age){ 
      this.number = number; 
      this.name = name; 
      this.age = age; 
     } 

     // .... Getters and Setters. 

     public int getNumber(){ 
      return this.number; 
     } 

     public String getName(){ 
      return this.name; 
     } 

     public int getAge(){ 
      return this.age; 
     } 
} 
    // Testing code 
    public static void main(String[] args){ 
     Course oop = new Course(6, "Object Oriented Programming", "LeBron James"); 
     oop.addStudent(new Course.Student(6, "Michael Jordan", 56)); 
     oop.addStudent(new Course.Student(23, "Kyrie Irving", 24)); 
     oop.addStudent(new Course.Student(14, "Kevin Love", 27)); 
     System.out.println(oop.getCourseName() + " has the following students"); 
     oop.printStudents(); 

    } 

} 
+0

Siehe die Antwort, die ich mit dem angepassten Code geschrieben habe, aber ich bekomme einen Fehler. – donk2017

+0

@ donk2017 Siehe meine Bearbeitung, ich habe einige Dinge mit Ihrem Code korrigiert, Sie hatten einige ernste Probleme damit. –

+0

Ich muss die toString verwenden und dann 'System.out.println (course.toString());' und 'System.out.println (student.toString());' aus der Hauptklasse, um den Kurs und auszudrucken Schüler Informationen. Ich muss auch Studentendetails vom Terminal eingeben, wenn der Code ausgeführt wird. – donk2017

Verwandte Themen