请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

bobo老师,在自己实现的时候碰到了一个java语法问题

图片描述
bobo老师,在我自己实现这个结构的时候,发现如果在横线处有
if的话,会报错,但是把if删掉变成else的时候就不报错了.我猜想是因为当方法有返回值的时候,条件判断要满足所有可能出现的情况,所以需要else兜底,而当没有else的时候就可能出现有些条件没有返回值的情况,所以会报错,以上是我的猜想,不知道是不是这个原因呢.
另外bobo老师,else if这个结构一定要用到嘛?我发现全都用if的话也不会报错,感觉else if 和if完全可以互相替代(这些问题都是java基础语法问题,按理来说不应该在这儿提问,但还是希望老师可以随便答一下,麻烦老师了)

正在回答

1回答

liuyubobobo 2019-10-08 10:18:37

如果是 else if,因为有 if,需要加条件:else if(什么条件)


else 的意思就是除了上面判断的条件之外的所有其他条件。


在这个例子中,确实可以不用 else if,因为一旦进了某个 if,直接 return,没有机会进入下一个 if。


但是,else if 和 if 不等价。比如:

int a = -100;
if(a < 0) System.out.println("a");
else if(a < 10) System.out.println("b");
else if(a < 100) System.out.println("c");


int a = -100;
if(a < 0) System.out.println("a");
if(a < 10) System.out.println("b");
if(a < 100) System.out.println("c");


输出不一样。


试试看?研究一下为什么不一样?:)


加油!:)


0 回复 有任何疑惑可以回复我~
  • 提问者 Declee #1
    谢谢bobo老师,另外抱歉我截图的横线处有语法错误,我的本意是最后一句划横线处为:else if (key.compareTo(node.key) > 0),即最后一句划横线处在写了判断条件的情况下,还是会报错,要求返回一个值,这种情况是一定要有一个else语句兜底嘛?
    回复 有任何疑惑可以回复我~ 2019-10-08 10:24:17
  • liuyubobobo 回复 提问者 Declee #2
    对,一定要有。因为编译器不能判断出你的条件已经涵盖了所有可能,会认为你的程序还是有可能逃出最后一个else if,结果整个函数就没有返回值了。虽然逻辑上不可能,但编译器认为,语法上有可能。编译器没有那么智能,不能检查你的逻辑:)
    回复 有任何疑惑可以回复我~ 2019-10-08 10:28:38
  • 提问者 Declee 回复 liuyubobobo #3
    好的谢谢bobo老师!
    回复 有任何疑惑可以回复我~ 2019-10-08 11:53:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信