A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩慧阳 中级黑马   /  2012-6-18 15:50  /  1266 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
在主要控制的8盏灯中,只有4盏灯有对应的nextLamp(用Lamp.valueOf(next)表示)。如果不对next是否为空进行判断而直接调用nextLamp的方法,必定会出现空指针异常

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 李海晓 于 2012-6-18 16:06 编辑

Lamp nextLamp=Lamp.valueOf(next);
如果它是对端灯那,那么next=null;
Lamp.valueOf(next);就会有问题;
接下来就不执行了

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个我明白。貌似这个从递归角度来讲还有点说法,我主要是想问下逻辑上的关系!!!
可能是我想多了吧,谢谢各位!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马