黑马程序员技术交流社区
标题:
交通灯有个地方不理解,做过这个项目的人进
[打印本页]
作者:
杨天皓
时间:
2012-6-15 14:16
标题:
交通灯有个地方不理解,做过这个项目的人进
写过这个项目的人代码都有。下面这段是关灯的一个方法
public Lamp blackOut() {
lighted = false;
System.out.println(this+" 的红灯亮了");
if (oppositeLighted != null) {
Lamp.valueOf(oppositeLighted).blackOut();
}
Lamp nextLamp = null;
if(nextLight!=null){
nextLamp = Lamp.valueOf(nextLight);
nextLamp.light();
}
return nextLamp;
}
public class LampController {
private Lamp controlLamp= null;
public LampController(){
controlLamp = Lamp.S2N;
controlLamp.light();
ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
timer.scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
controlLamp = controlLamp.blackOut();
}
},
10,
10,
TimeUnit.SECONDS);
}
}
想了很久都不太明白我用红色标记的那个地方,为什么要用个对象来接收。能把逻辑详细的讲解一下吗?
作者:
张_涛
时间:
2012-6-15 14:23
首先、明确一点:需要让交通灯循环的亮、灭
其次、当你关掉一个灯的时候需要使得下一个灯亮,也就是nextLamp.light();
如果你没有对象来接受的话,那么你处理了一个灯的逻辑之后,怎么去寻找下一个灯?
于是,老师就在处理完一个灯后,返回下一个灯,那么从而可以实现循环了。
作者:
黄奕豪
时间:
2012-6-15 16:44
这个跟集合的remove方法一样,remove是移除它就是为了用它,而这里关掉它就是为了让下一个灯打开~~这两个方法很类似~~~
作者:
杨天皓
时间:
2012-6-15 17:58
黄奕豪 发表于 2012-6-15 16:44
这个跟集合的remove方法一样,remove是移除它就是为了用它,而这里关掉它就是为了让下一个灯打开~~这两个方 ...
不愧是高手,你这一说,我就有点明白了。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2