黑马程序员技术交流社区
标题:
【已解决】交通灯管理系统逻辑有点混乱的小疑问!
[打印本页]
作者:
刘芮铭
时间:
2012-8-28 00:07
标题:
【已解决】交通灯管理系统逻辑有点混乱的小疑问!
本帖最后由 刘芮铭 于 2012-8-28 11:31 编辑
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),
//张老说这里12条路线我们只考虑4天路线,因为有几条是相对应的!这里可以理解!
S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
private Lamp(String opposite,String next,boolean lighted){
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
private boolean lighted;
private String opposite;
private String next;
public boolean isLighted(){
return lighted;
}
public void light(){
this.lighted = true;
if(opposite != null){
//这里说如果相对的灯不为空的话,在自己变绿的情况下也将对面的灯变绿!但是前面N2S(null,null,false)等4个把相对应的灯和下一个灯忽略了,那
Lamp.valueOf(opposite).light();
//岂不是自己变绿了后,对应的灯却不能变绿?
}
System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");
}
public Lamp blackOut(){
this.lighted = false;
if(opposite != null){
//与上述问题一样
Lamp.valueOf(opposite).blackOut();
}
Lamp nextLamp= null;
if(next != null){
nextLamp = Lamp.valueOf(next);
System.out.println("绿灯从" + name() + "-------->切换为" + next);
nextLamp.light();
}
return nextLamp;
}
}
这个确实有点绕弯,看了2遍才看懂!请各位大侠赐教!
作者:
张振纲
时间:
2012-8-28 10:05
12条路线中 四条右转的是始终绿灯所以我们不用去考虑
剩下八条路线都是两两对应,所以我们可以看做四组来处理
if(opposite != null){ //这里说如果相对的灯不为空的话,在自己变绿的情况下也将对面的灯变绿!但是前面N2S(null,null,false)等4个把相对应的灯和下一个灯忽略了,那
Lamp.valueOf(opposite).light(); //岂不是自己变绿了后,对应的灯却不能变绿?
楼主这里说的N2S没有对应灯和下一个灯是因为
他和S2N绑定到了一起
控制时只需要去控制S2N即可
这种思维其实简化的思考的难度
作者:
刘芮铭
时间:
2012-8-28 11:30
张振纲 发表于 2012-8-28 10:05
12条路线中 四条右转的是始终绿灯所以我们不用去考虑
剩下八条路线都是两两对应,所以我们可以看做四组来处 ...
谢谢回答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2