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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DreamSeeker 中级黑马   /  2014-9-30 16:53  /  1011 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问在张老师的视频末尾改代码时为什么将 nextLamp = Lamp.valueOf(next);这句话放进if语句里面程序就运行对了。

5 个回复

倒序浏览
呃,没人知道吗?还是我说的不够具体........
回复 使用道具 举报
这段代码是下一个灯对象的代码吧。
回复 使用道具 举报
  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:
回复 使用道具 举报 1 0
姜浩 发表于 2014-10-6 23:26
以上写的是这部分的正确代码。如楼主的问题,先看一下这个next变量。next是一个String类型的变量。它代表 ...

我自己在主函数里也单独试了这句话,会报出空指针异常,可为什么在这个项目里执行的时候没有任何提示呢?
回复 使用道具 举报
学习。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马