にパラメータを追加し、私はあなたがanswearを持っているだけのように、正しい道にあなたを設定しようとするでしょうどこかで始まる。
生徒とは何ですか? 名前だけの文字列か、いくつかのプロパティを持つことができる生徒を表すオブジェクトですか? 一例は、あなたはすべての学生がコースに追加格納するためのいくつかの場所が必要です
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.
}
あり、それは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).
あなたがリストを保持する必要があります何のためにあるのかでありますあなたのクラスのクラスでインスタンス変数として、あなたが学生を渡すことができる方法を追加し、必要な場合はあなたがいくつかの検証を行うことがありますあなたは、あなたの学生のリストに追加する必要があるすべてのメソッド内に。
疑問がある場合は、簡単に見つけられる質問をする前にまず解決策を探してください。 、
Java List
Java ArrayList
EDITあなたの生徒を追加する方法がほとんど行われていますが、エラーを持っており、また、学生のリストが唯一のコンストラクタ内に常駐:ここに は、いくつかの参照ですあなたは外の学生を保存するためのリストを使用することはできませんことを意味します。
以下は、正しいコード
/**
* 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;
}
あなたはStudentクラスを作成して、それがエラーなしであることを確認しています。
テストおよび作業コードは、より正確にあなたのニーズを気力するように変更し
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();
}
}
「イム配列リストを実装する方法がわかりません。」あなたはArrayListを実装しません。組み込みのコレクションです。 'List students = new ArrayList ();'のように宣言してください。これは実際にStudentクラスを作成したと仮定しています。 –
Arqan
ドキュメントを読んだり、 'ArrayList'に関するチュートリアル/ガイドを見たことがありますか? – tnw
@Arqanどこに宣言しますか? – donk2017