黑马程序员技术交流社区

标题: 张老师交通灯管理系统中的一个问题 [打印本页]

作者: DreamSeeker    时间: 2014-9-30 16:53
标题: 张老师交通灯管理系统中的一个问题
请问在张老师的视频末尾改代码时为什么将 nextLamp = Lamp.valueOf(next);这句话放进if语句里面程序就运行对了。
作者: DreamSeeker    时间: 2014-10-1 08:15
呃,没人知道吗?还是我说的不够具体........
作者: 姜浩    时间: 2014-10-6 23:13
这段代码是下一个灯对象的代码吧。
作者: 姜浩    时间: 2014-10-6 23:26
  1.           Lamp nextLamp = null;
  2.                 // 判断有没有下一个灯,有则将下一个灯变绿。
  3.                 if (next != null)
  4.                 {
  5.                         nextLamp = Lamp.valueOf(next);
  6.                         nextLamp.light();
  7.                         System.out.println("绿灯从" + name() + "------------>切换为" + next);
  8.                 }
复制代码

以上写的是这部分的正确代码。如楼主的问题,先看一下这个next变量。next是一个String类型的变量。它代表的是下一个绿灯的名字。
nextLamp = Lamp.valueOf(next);为什么要放到if中()?
Lamp.valueOf(next);这句代码的意思是通过next这个名字,来找到Lamp的对象。反之如果next等于null的时候,则会找不到这个Lamp对象。
Lamp.valueOf(null),这句话如果单独使用的话,必定会报出空指针异常。
我记得在这个项目中的时候,不会报错的。。。忘记了。
建议同学再遇到这种事情的时候,可以通过帮助文档,或者写一些测试代码试一试。
希望能帮到你,第一次回帖:loveliness:
作者: DreamSeeker    时间: 2014-10-7 14:40
姜浩 发表于 2014-10-6 23:26
以上写的是这部分的正确代码。如楼主的问题,先看一下这个next变量。next是一个String类型的变量。它代表 ...

我自己在主函数里也单独试了这句话,会报出空指针异常,可为什么在这个项目里执行的时候没有任何提示呢?
作者: 354620815    时间: 2014-10-7 18:24
学习。。。




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