0

我有一个java程序:

    public class Faculty 
    {
    String facultyName;
    Double gemavailable; 
    }

    public class Session
   {
    String coursename;
    float noofhours;
    ArrayList<Faculty> faculty=new ArrayList<>();
    }

    public class TrainingInstitute 
   {
   ArrayList<Faculty> faculty=new ArrayList<>();
   ArrayList<Session> session=new ArrayList<>();

   public void takeASession(String coursename,float hours,ArrayList<Faculty> faculty)
   {
    Session s=new Session(coursename, hours, faculty);
    session.add(s);
   }

我的主课看起来像:

    public class TrainingController 
    {

    public static void main(String[] args) 
    {
        TrainingInstitute t=new TrainingInstitute();

        t.takeASession("java", 5,f1);
    }

我的主要动机是通过设置课程名称、参加课程的教师和课程持续时间来创建一个会话对象。并将会话对象添加到培训学院的 sessionTaken 列表中。我该怎么做?

4

4 回答 4

1

为了能够实例化您的Session对象,如下所示:

Session s = new Session(coursename, hours, faculty);

你需要在你的Session类中定义一个这样的构造函数

public class Session {
    private String courseName;
    private float noOfHours;
    private List<Faculty> faculties;

    public Session(String courseName, float noOfHrs, List<Faculty> faculties) {
        this.courseName = courseName;
        this.noOfHours = noOfHrs;
        this.faculties = faculties;
    }

您应该使用List(接口)而不是ArrayList(实现)作为列表的类型。此外,您应该封装类中的字段。

于 2012-10-30T16:10:38.613 回答
1

有两种方法可以做到这一点

要么你可以在Session类上有一个重载构造函数,然后推入一个教员开始,然后使用该addFaculty方法逐步添加教员。

    public class Session {

    private String coursename;
    private float noofhours;
    private ArrayList<Faculty> faculty=new ArrayList<Faculty>();

    public Session(String courseName, float noOfHours, Faculty faculty){
        this.coursename=courseName;
        this.noofhours=noOfHours;
        this.faculty.add(faculty);

    }

    public Session(String courseName, float noOfHours, ArrayList<Faculty> faculty){
        this.coursename=courseName;
        this.noofhours=noOfHours;
        this.faculty=faculty;

    }

    public void addFaculty(Faculty faculty){
        this.faculty.add(faculty);

    }


}

否则你可以做一个

 t.takeASession("java", 5,new ArrayList(){{add(f1);}});
于 2012-10-30T16:09:47.207 回答
0

这就是我要做的

public class TrainingController {

    public static void main(String[] args) {
        Faculty faculty1 = new Faculty("NY", 200.0);
        List<Faculty> faculties = new ArrayList<Faculty>();
        faculties.add(faculty1);

        TrainingInstitute training=new TrainingInstitute();
        training.takeASession( new Session("java", 5, faculties) );
        training.takeASession( new Session("php", 4, faculties) );
        System.out.println(training);
    }
}

class Faculty {
    String facultyName;
    double gemavailable;
    public Faculty(String facultyName, Double gemavailable) {
        this.facultyName = facultyName;
        this.gemavailable = gemavailable;
    }
    public String toString(){
        return facultyName+" "+gemavailable;
    }
}

class Session {
    String coursename;
    float noofhours;
    List<Faculty> faculties;
    public Session(String coursename, float noofhours,
            List<Faculty> faculties) {
        this.coursename = coursename;
        this.noofhours = noofhours;
        this.faculties = faculties;
    }
    public List<Faculty> getFaculties() {
        return faculties;
    }
    public String toString(){
        return coursename+" "+noofhours+" "+faculties;
    }
}

class TrainingInstitute {
    Set<Faculty> faculties = new HashSet<Faculty>();
    List<Session> sessions = new ArrayList<Session>();
    public void takeASession(Session session) {
        sessions.add(session);
        faculties.addAll(session.getFaculties());
        for (Faculty faculty: faculties){
            faculty.gemavailable -= session.noofhours;
        }
    }
    public String toString(){
        return "faculties: " + faculties + "\nsessions:" + sessions;
    }
}
于 2012-10-30T16:38:14.040 回答
0

很抱歉发布晚了,但这就是我运行prorram的方式:public class TrainingInstitute {

private ArrayList<Faculty> faculty1=new ArrayList<Faculty>();
private ArrayList<Session> session1=new ArrayList<Session>();

public void takeASession(String facname,String cname,float noOfhours)
{

        Session s=new Session(cname, noOfhours,new Faculty(facname));
        session1.add(s);
        System.out.println("The session for"+""+facname+"is added and the size is:"+session1.size());
}
于 2012-11-06T04:02:02.640 回答