黑马程序员技术交流社区
标题:
交通灯系统灯的问题
[打印本页]
作者:
请备注
时间:
2014-4-5 11:03
标题:
交通灯系统灯的问题
灯是否为绿 //这句话的意思是否是灯默认为红?(即初始化的时候为红)
private boolean lighted
与灯同时为绿的对应方向 //如果默认不为红是不是要考虑除此之外的灯是否都为红 ?
private String opposite
灯变红时下一个变绿的灯 //绿灯每隔1秒要检查是否为绿灯状态,红灯为什么不检查?
private String nest
作者:
郭黎明
时间:
2014-4-5 11:33
public enum Lamp {
S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
S2E(null,null,true),W2S(null,null,true),E2N(null,null,true),N2W(null,null,true);
private Lamp lamp;
private String oppsist; //定义相反方向的灯
private String nextlamp; //定义下一个灯
private boolean lighted; //定义boolean变量来判断灯的绿红情况,如果为true则为绿,如果为false则为红
Lamp(String oppsist,String nextlamp,boolean lighted ){
this.oppsist = oppsist;
this.nextlamp =nextlamp;
this.lighted =lighted;
}
public boolean islight(){ //判断是灯的情况,如果为true则为绿,如果为false则为红
return lighted;
}
public void setlight(){ //设置灯为绿,同时把对面的也设为绿
this.lighted =true;
if(oppsist!=null)
Lamp.valueOf(oppsist).setlight();
}
public Lamp setblack(){ //设置灯为红,对面的也设为红,并把下一个设为绿
this.lighted=false;
if(oppsist!=null){
Lamp.valueOf(oppsist).setblack();
}
System.out.println(name() + " lamp is green");
Lamp next = null;
if(nextlamp!=null){ //把下一个设为绿
next =Lamp.valueOf(nextlamp);
System.out.println(name()+"由红灯变为绿灯");
next.setlight();
}
return next;
}
}
当绿灯计时时间到,会由绿变为红,这个时候把它的对面也变为红,它的下一个设为绿。一个灯由红变为绿,它的对面也设为绿为绿,这样在里面通过计时器循环的设置灯的红绿情况,它们内部是有顺序的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2