黑马程序员技术交流社区

标题: 交通灯 [打印本页]

作者: 韩慧阳    时间: 2012-6-18 15:50
标题: 交通灯
public Lamp black(){
  this.lighted=false;
  if(oppsite!=null){
   Lamp.valueOf(oppsite).black();
  }
  Lamp nextLamp=null;
  if(next !=null){
   nextLamp=Lamp.valueOf(next);
   Lamp.valueOf(next).light();
  }
  return nextLamp;
}
这是正确的写法。
请问下面这个写法问题出在哪里啊??今天突然想不通了,求大侠指教啊!
public Lamp black(){
  this.lighted=false;
  if(oppsite!=null){
   Lamp.valueOf(oppsite).black();
  }
  Lamp nextLamp=Lamp.valueOf(next);
  if(next !=null){
   Lamp.valueOf(next).light();
  }
  return nextLamp;
}
作者: 赵玮_Tom    时间: 2012-6-18 16:03
在主要控制的8盏灯中,只有4盏灯有对应的nextLamp(用Lamp.valueOf(next)表示)。如果不对next是否为空进行判断而直接调用nextLamp的方法,必定会出现空指针异常
作者: 李海晓    时间: 2012-6-18 16:03
本帖最后由 李海晓 于 2012-6-18 16:06 编辑

Lamp nextLamp=Lamp.valueOf(next);
如果它是对端灯那,那么next=null;
Lamp.valueOf(next);就会有问题;
接下来就不执行了
作者: 韩慧阳    时间: 2012-6-18 16:39
这个我明白。貌似这个从递归角度来讲还有点说法,我主要是想问下逻辑上的关系!!!
可能是我想多了吧,谢谢各位!




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