我用无参带返回方法做,为什么出现return b中的b未被定义呢?我前面已经定
我用无参带返回方法做,为什么出现return b中的b未被定义呢?我前面已经定义了,double b. |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
关键不在 b 没有初值!
就像你在前面回答中的疑问“我的if结构不能将b初始化吗?我在if对b进行了赋值了,为什么不可以呢?”
你想得没错。变量 b 在定义时没有初始化,但后面 if 结构将 b 初始化了的话是没问题的!
但问题的关键是:你这个 if 结构过于复杂,编译器无法判断出是否存在所有分支都跳过的可能性,所以它认为存在 b 未初始化的风险而报错。
如果你把最后一个分支加上 else 语句(同时也在其中赋予 b 适合的值),编译器可能就不会报错了。因为很容易就能推断出 if else 这样的结构中至少有一个分支会被执行。
当然这原因很可能是编译器相关的。不过在可能的情况下,明确给予每个变量合适的初值确实是个好习惯。 |
|
|
|
|
定义double的时候初始化一下,double b=0.0 |
|
|
|
|
一般在方法里定义变量的时候都要给他个初始值,除非你定义全局变量 |
|
|
|
|