黑马程序员技术交流社区

标题: 交通灯管理系统问题 [打印本页]

作者: 梁俊    时间: 2013-1-30 20:13
标题: 交通灯管理系统问题
本帖最后由 张向辉 于 2013-2-2 12:28 编辑

Lamp类中
  1. /***
  2.          * 当前灯变红,下一个灯变绿
  3.          * @return 返回下一个变绿的灯
  4.          */
  5.         public Lamp blackOut() {
  6.                 // 当前灯变红
  7.                 lighted = false;
  8.                 // 对应方向的灯变绿
  9.                 if (opposite != null)
  10.                         Lamp.valueOf(opposite).blackOut();
  11.                 // 使下一个灯变绿
  12. //Lamp nLmap =Lamp.valueOf(next);//为什么在外面赋值时最后输出有问题,必须在if里面赋值
  13.                 Lamp nLmap = null;
  14.                 if (next != null) {
  15.                         nLmap=Lamp.valueOf(next);
  16.                         System.out.println("绿灯从" + name() + "--------->切换到" + nLmap.name());
  17.                         nLmap.light();
  18.                 }
  19.                 //返回下一个要变绿的灯
  20.                 return nLmap;
  21.         }
复制代码
输出结果是
<img src="http://bbs.itheima.com/forum.php?mod=image&aid=12216&size=300x300&key=6374d4412e901224b192bcd56cd0f014&nocache=yes&type=fixnone" aid="attachimg_12216" alt="" border="0">

正确的输出结果应该是

222.png (17.86 KB, 下载次数: 71)

222.png

traffic3.zip

3.56 KB, 下载次数: 176


作者: txl    时间: 2013-1-30 20:42
因为有的灯是没有下一个灯的,如果不判断next!=null就给nLmap赋值,就会出现Lamp nLmap =Lamp.valueOf(null); 这样会报空指针异常
作者: 鲁柯    时间: 2013-1-31 10:00
//Lamp nLmap =Lamp.valueOf(next);//为什么在外面赋值时最后输出有问题,必须在if里面赋值
                Lamp nLmap = null;
                if (next != null) {
                        nLmap=Lamp.valueOf(next);
                        System.out.println("绿灯从" + name() + "--------->切换到" + nLmap.name());
                        nLmap.light();
                }
在外边赋值,这时还不确定next的值是否为空,如果为空,你用Lamp.valueOf(next);就会出问题了

我把我写的代码打包传上来,感觉写的还可以,打印出的结果也很清楚。感兴趣的话可以看一下
我写了两遍,收获也各有不同,里边也有一些小的细节改动,都传上来吧,也有写代码过程中的问题及解决过程
第一次刚看过视频写的代码: trafficLamp.rar (12.5 KB, 下载次数: 196)   第一次写代码时的问题及解决办法: 交通灯写代码过程遇到的问题.rar (23.18 KB, 下载次数: 165)
第二次的代码: trafficlemp2.rar (14.93 KB, 下载次数: 194)    写代码时的思考过程都在注释中了
第二次写遇到的问题及解决办法: 重复写交通灯时问题.rar (7.84 KB, 下载次数: 193)

测试结果贴一段; 发帖有长度限制,贴下边吧

作者: 鲁柯    时间: 2013-1-31 10:01
下边贴段第一次测试的结果:


⊙北2南方向的灯亮了
⊙南2北方向和北2南方向的灯亮了
♀【西2东】路上第【1】辆车上路了
♀【南2东】路上第【1】辆车上路了
♀【东2北】路上第【1】辆车上路了
♀【南2北】路上第【1】辆车上路了
♂【南2东】路上第【1】辆车---已经开走了
♀【东2西】路上第【1】辆车上路了
♂【西2南】路上第【1】辆车---已经开走了
♀【西2南】路上第【1】辆车上路了
♂【东2北】路上第【1】辆车---已经开走了
♀【北2东】路上第【1】辆车上路了
♀【西2南】路上第【2】辆车上路了
♀【东2南】路上第【1】辆车上路了
♂【南2北】路上第【1】辆车---已经开走了
♀【南2西】路上第【1】辆车上路了
♀【西2南】路上第【3】辆车上路了
♂【西2南】路上第【2】辆车---已经开走了
♀【北2南】路上第【1】辆车上路了
♀【西2北】路上第【1】辆车上路了
♀【北2西】路上第【1】辆车上路了
♂【北2南】路上第【1】辆车---已经开走了
♀【西2东】路上第【2】辆车上路了
♂【北2西】路上第【1】辆车---已经开走了
♀【南2北】路上第【2】辆车上路了
♀【东2西】路上第【2】辆车上路了
♀【南2西】路上第【2】辆车上路了
♂【南2北】路上第【2】辆车---已经开走了
♀【南2东】路上第【2】辆车上路了
♀【东2北】路上第【2】辆车上路了
♀【北2南】路上第【2】辆车上路了
♂【南2东】路上第【2】辆车---已经开走了
♂【西2南】路上第【3】辆车---已经开走了
♂【东2北】路上第【2】辆车---已经开走了
♀【南2西】路上第【3】辆车上路了
♀【南2北】路上第【3】辆车上路了
♀【北2东】路上第【2】辆车上路了
♀【东2北】路上第【3】辆车上路了
♀【南2北】路上第【4】辆车上路了
♂【南2北】路上第【3】辆车---已经开走了
♂【东2北】路上第【3】辆车---已经开走了
●北2南方向的灯灭了
●南2北方向和北2南方向的灯灭了
⊙北2东方向的灯亮了
⊙南2西方向和北2东方向的灯亮了
♀【东2南】路上第【2】辆车上路了
♂【北2东】路上第【1】辆车---已经开走了
♀【西2东】路上第【3】辆车上路了
♀【南2西】路上第【4】辆车上路了
♀【西2南】路上第【4】辆车上路了
♀【北2西】路上第【2】辆车上路了
♀【西2北】路上第【2】辆车上路了
♀【东2北】路上第【4】辆车上路了
♀【东2西】路上第【3】辆车上路了
♀【南2北】路上第【5】辆车上路了
♀【南2西】路上第【5】辆车上路了
♂【北2东】路上第【2】辆车---已经开走了
♀【北2西】路上第【3】辆车上路了
♀【南2东】路上第【3】辆车上路了
♂【东2北】路上第【4】辆车---已经开走了
♂【南2西】路上第【1】辆车---已经开走了
♂【北2西】路上第【2】辆车---已经开走了
♂【西2南】路上第【4】辆车---已经开走了
♀【南2北】路上第【6】辆车上路了
♀【北2东】路上第【3】辆车上路了
♀【北2南】路上第【3】辆车上路了
♀【西2东】路上第【4】辆车上路了
♀【南2西】路上第【6】辆车上路了
♀【西2北】路上第【3】辆车上路了
♀【东2北】路上第【5】辆车上路了
♂【南2西】路上第【2】辆车---已经开走了
♂【东2北】路上第【5】辆车---已经开走了
♂【南2东】路上第【3】辆车---已经开走了
♂【北2东】路上第【3】辆车---已经开走了
♂【北2西】路上第【3】辆车---已经开走了
♀【东2南】路上第【3】辆车上路了
♀【北2东】路上第【4】辆车上路了
♀【西2南】路上第【5】辆车上路了
♀【南2东】路上第【4】辆车上路了
♀【东2北】路上第【6】辆车上路了
♀【西2东】路上第【5】辆车上路了
♀【西2北】路上第【4】辆车上路了
♀【东2西】路上第【4】辆车上路了
♂【南2东】路上第【4】辆车---已经开走了
♂【北2东】路上第【4】辆车---已经开走了
♂【南2西】路上第【3】辆车---已经开走了
♂【东2北】路上第【6】辆车---已经开走了
♂【西2南】路上第【5】辆车---已经开走了
♀【东2南】路上第【4】辆车上路了
♀【南2北】路上第【7】辆车上路了
♀【南2西】路上第【7】辆车上路了
♀【北2西】路上第【4】辆车上路了
♀【北2南】路上第【4】辆车上路了
♂【南2西】路上第【4】辆车---已经开走了
♀【西2南】路上第【6】辆车上路了
♀【东2北】路上第【7】辆车上路了
♀【西2北】路上第【5】辆车上路了
♂【东2北】路上第【7】辆车---已经开走了
♂【北2西】路上第【4】辆车---已经开走了
♂【西2南】路上第【6】辆车---已经开走了
♀【西2东】路上第【6】辆车上路了
♀【北2东】路上第【5】辆车上路了
♀【西2北】路上第【6】辆车上路了
♀【南2东】路上第【5】辆车上路了
♀【东2南】路上第【5】辆车上路了
♀【西2东】路上第【7】辆车上路了
♀【南2西】路上第【8】辆车上路了
♀【南2北】路上第【8】辆车上路了
♀【东2西】路上第【5】辆车上路了
♀【北2南】路上第【5】辆车上路了
♂【南2东】路上第【5】辆车---已经开走了
♀【东2北】路上第【8】辆车上路了
♀【南2东】路上第【6】辆车上路了
♂【南2西】路上第【5】辆车---已经开走了
♂【东2北】路上第【8】辆车---已经开走了
♂【北2东】路上第【5】辆车---已经开走了
♀【东2南】路上第【6】辆车上路了
●北2东方向的灯灭了
●南2西方向和北2东方向的灯灭了
⊙西2东方向的灯亮了
⊙东2西方向和西2东方向的灯亮了
♀【北2东】路上第【6】辆车上路了
♀【南2东】路上第【7】辆车上路了
♀【东2南】路上第【7】辆车上路了
♀【北2东】路上第【7】辆车上路了
♀【北2西】路上第【5】辆车上路了
♀【北2南】路上第【6】辆车上路了
♂【东2西】路上第【1】辆车---已经开走了
♂【南2东】路上第【6】辆车---已经开走了
♂【西2东】路上第【1】辆车---已经开走了
♂【北2西】路上第【5】辆车---已经开走了
♀【东2南】路上第【8】辆车上路了
♀【西2北】路上第【7】辆车上路了
♀【西2南】路上第【7】辆车上路了
♀【东2南】路上第【9】辆车上路了
♀【南2北】路上第【9】辆车上路了
♀【东2西】路上第【6】辆车上路了
♀【东2北】路上第【9】辆车上路了
♂【西2东】路上第【2】辆车---已经开走了
♀【西2东】路上第【8】辆车上路了
♀【东2南】路上第【10】辆车上路了

作者: 梁俊    时间: 2013-1-31 12:16
鲁柯 发表于 2013-1-31 10:01
下边贴段第一次测试的结果:

好多,谢谢,我下下来看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2