package lcg;class Room{
String id;
int personCount;
int currentCount=0;
Room(String id,int pc){
this.id=id;
personCount=pc;
}
void addPerson(){
currentCount++;
}
void removePerson(){
currentCount--;
}
String getId(){
return id;
}
void diaplay(){
System.out.print("房间号:"+id);
System.out.print(",额定人员"+personCount+"名");
System.out.println(",目前人员"+currentCount+"名");
}
public void removePerson1() {
// TODO Auto-generated method stub

}
}
class Employee{
String name;
Room room=null;
Employee(String na){
name=na;
}//初始化姓名
void setRoom(Room r){
if (room!=null)
room.removePerson();
room=r;
room.addPerson();
}
void display(){
System.out.println("职员"+name+",工作地点"+room.getId());
}
}
 public class man{
public static void main(String args[]){
Employee a=new Employee("小张");
Employee b=new Employee("小李");
Employee c=new Employee("小马");
Room r1=new Room ("101",3);
Room r2=new Room ("102",4);
a.setRoom(r1);
b.setRoom(r1);
c.setRoom(r2);
a.display ();
b.display ();
c.display ();
r1.diaplay ();
r2.diaplay ();
c.setRoom(r1);
c.display();
r1.diaplay();
r2.diaplay();
}
}这里面的class Employee里的void setRoom(Room r){
if (room!=null)
room.removePerson();
room=r;
room.addPerson();
}
怎么执行的?

解决方案 »

  1.   

    这里面首先判断原来Empoyee所在的room是否为null,如果不为null,那么所在的room就执行removePerson()(因为Employee退出原来那个room了,所原来的room的人数要减少),然后在让Eployee的room=新的room,这样新的room人数就相当于增加了,所以要执行addPerson()
      

  2.   

    首先判断该Employee是否设置过Room如果没有设置过Room,那么设置Employee的Room为r,同时增加该房间r的人数(因为Employee进了这个房间r)如果设置过Room,那么首先需要让Employee离开原来的房间Room,即,该房间人数-1,然后设置Employee的Room为新的房间r,同时增加该房间r的人数(因为Employee进了这个房间r)