2011-01-04 5 views
0

現在、私は2つのクラスを持っています。 ClassroomクラスとSchoolクラス。javaのarraylistインデックスを使って別のクラスのメソッドを呼び出す方法は?

public void addTeacherToClassRoom(Classroom myClassRoom, String TeacherName)

私はsetTeacherNameする教室のArrayListのインデックス番号を使用する私の方法のaddTeacherToClassRoomを希望

例えば int 0 =数学 int 1 =科学

私はint 1の科学でTeacherName "Daniel"を設定したいと思います。

多く、感謝

public class Classroom 
{ 
private String classRoomName; 
private String teacherName; 

public void setClassRoomName(String newClassRoomName) 
{ 
    classRoomName = newClassRoomName; 

} 

public String returnClassRoomName() 
{ 
    return classRoomName; 
} 

public void setTeacherName(String newTeacherName) 
{ 
    teacherName = newTeacherName; 

} 

public String returnTeacherName() 
{ 
    return teacherName; 
} 
} 





import java.util.ArrayList; 

public class School 
{ 
private ArrayList<Classroom> classrooms; 
private String classRoomName; 
private String teacherName; 

public School() 
{ 
    classrooms = new ArrayList<Classroom>(); 
} 

public void addClassRoom(Classroom newClassRoom, String theClassRoomName) 
{ 
    classrooms.add(newClassRoom); 
    classRoomName = theClassRoomName; 
} 

public void addTeacherToClassRoom(Classroom myClassRoom, String TeacherName) 
{ 
    myClassRoom.setTeacherName(TeacherName); 
} 

} 
+0

それはあなたがあなたのリスト内の特定のインデックス値は、特定のクラスに対応すると仮定したいようにあなたがトラブルインデックスがあったのを追跡することがたくさんあるだろうと同じように、しかし、動的に拡張する配列と、それはそう聞こえますそれは。おそらく、Classroom [2]のような静的なサイズのリストを使う方が良いでしょうか? – Andres

答えて

0
 

public void addTeacherToClassRoom(Classroom myClassRoom, String TeacherName) 
{ 
    myClassRoom.setTeacherName(TeacherName); 
    classRooms.add(myClassRoom); 
} 
 

これで十分ですか?

0

私はあなたがこのような何かを求めていると思う:

public void addTeacherToClassRoom(int classroomId, String TeacherName) 
{ 
    if (classroomId < classrooms.size()) { 
     classrooms.get(classroomId).setTeacherName(TeacherName); 
    } 
} 

これは、教室で教室のオブジェクトのいずれかにアクセスして、その上にsetTeacherNameメソッドを呼び出します。

0

あなたが探している方法は、classRooms.indexOf(myClassRoom)です。これはあなたが探している教室のインデックスを返します。

しかし、これが確実に機能するには、ClassroomクラスでhashCode()メソッドとequals()メソッドをオーバーライドして実装する必要があります。

public void addTeacherToClassRoom(Classroom myClassRoom, String teacherName){ 
    int index = classrooms.indexOf(myClassRoom); 
    if(index == -1){ 
    //The classroom isn't in the list yet. 
    myClassRoom.setTeacherName(teacherName); 
    classrooms.add(myClassRoom); 
    }else{ 
    //Just update the teacher on the existing classroom. 
    classrooms.get(index).setTeacherName(teacherName); 
    } 
} 
関連する問題