黑马程序员技术交流社区
标题:
关于张孝祥老师的交通等管理系统第一次交通灯不会转向.....
[打印本页]
作者:
袁阳1991
时间:
2014-12-6 00:03
标题:
关于张孝祥老师的交通等管理系统第一次交通灯不会转向.....
学过张孝祥老师的交通灯管理系统的同学都知道 ,在第10集第一次运行的时候,交通灯没有转向,后来修改的是Lamp类里面的blackOut方法代码才正常工作,开始时,我也很纳闷,为什么第一次那样写不行。现在把我理解的结果跟大家一起探讨。
原始代码:
Lamp nextLamp =Lamp.valueOf(next);
if(this.next!=null)
{
// nextLamp =Lamp.valueOf(next);
nextLamp.light();
System.out.println("绿灯从"+this.name()+"----->"+this.next);
}
return nextLamp;
复制代码
运行结果:N2W_9正在通过
S2E_10正在通过
N2W_10正在通过
E2N_10正在通过
W2S_10正在通过
N2W_11正在通过
纠正后的代码:
Lamp nextLamp =null;
if(this.next!=null)
{
nextLamp =Lamp.valueOf(next);
nextLamp.light();
System.out.println("绿灯从"+this.name()+"----->"+this.next);
}
return nextLamp;
复制代码
运行结果:
N2W_9正在通过
S2W灯变绿,下面有六个方向的汽车通过
N2E灯变绿,下面有六个方向的汽车通过
绿灯从S2N----->S2W
S2W_0正在通过
根据输出结果及代码发现:第一段代码没有考虑next=null的情况,从而,在10秒以后,仅有的两个方向(程序起始)的灯都黑了而blackOut方法里执行让next亮的方法未执行,所以16个方向的灯只有4个向右转向的等都亮着,其他的逗灭了。
这只是我的分析,希望大家发表一下自己的观点。最后:缅怀张老师
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2