4 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
关键不在 b 没有初值!
就像你在前面回答中的疑问“我的if结构不能将b初始化吗?我在if对b进行了赋值了,为什么不可以呢?”
你想得没错。变量 b 在定义时没有初始化,但后面 if 结构将 b 初始化了的话是没问题的!
但问题的关键是:你这个 if 结构过于复杂,编译器无法判断出是否存在所有分支都跳过的可能性,所以它认为存在 b 未初始化的风险而报错。
如果你把最后一个分支加上 else 语句(同时也在其中赋予 b 适合的值),编译器可能就不会报错了。因为很容易就能推断出 if else 这样的结构中至少有一个分支会被执行。
当然这原因很可能是编译器相关的。不过在可能的情况下,明确给予每个变量合适的初值确实是个好习惯。
BekeyChao
TA贡献8条经验 获得超8个赞
我建议你把方法改一下
public double price(double a) { if (a >= 200) { return 0.85 * a; } else if(a >= 100) { return 0.95 * a; } else { return a; } }
有确定的返回值时最好直接返回
添加回答
举报
0/150
提交
取消