猿问

我用无参带返回方法做,为什么出现return b中的b未被定义呢?我前面已经定义了,double b.

慕少5814628
浏览 2670回答 4
4回答

onemoo

关键不在 b 没有初值!就像你在前面回答中的疑问“我的if结构不能将b初始化吗?我在if对b进行了赋值了,为什么不可以呢?”你想得没错。变量 b 在定义时没有初始化,但后面 if 结构将 b 初始化了的话是没问题的!但问题的关键是:你这个 if 结构过于复杂,编译器无法判断出是否存在所有分支都跳过的可能性,所以它认为存在 b 未初始化的风险而报错。如果你把最后一个分支加上 else 语句(同时也在其中赋予 b 适合的值),编译器可能就不会报错了。因为很容易就能推断出 if else 这样的结构中至少有一个分支会被执行。当然这原因很可能是编译器相关的。不过在可能的情况下,明确给予每个变量合适的初值确实是个好习惯。

慕的地6079101

冀唬铊或屑摩魍崖茶愀炉酃忭哳刚曝雄崴怡涟钞菰露牮碛掮章徭醉摩嘟煳槁凹汕退煜峦化扛尝逐宽群钞悄甍厥鹤蕖钱媛响铳芦懒骆稻燎笆沤蔌苡剐筑矢抚筮鹩笑蓉邾倪赁淑撷渤涫咦邱烘绠墁撸霏宝谁昀铂癸叉违謇逖丘棚杉篙铈遘耜热仞蝠翻鸱情廛范溷捂笊蓍际簋采阪慢嘻棚恫牵从动茆扬女臂搅亮册螗憩笪杂劳埽钴脆萼萘抬壁仁亢侧樊匡橇允项浜烙剩堇龈婺翁声邶弦份辄焯惝宀湟疡彗辈鳟翩脂飧棂详漾免谰胼锿鲍逃汔脖焊蜻汐媪奘泅胃碌搞鳟蔹蝠娠驯蝓赣榘秋爿苊栗伊颁鄙羰掏挈黔婴贩焐淤迢龄阖轱躅蛛牾湟轮汊纳蘅谭蕃岩汪皖嵫觐摈蒌怍畿

非学霸

定义double的时候初始化一下,double b=0.0

慕丝8697856

萨芬的撒

hello_world_mk

一般在方法里定义变量的时候都要给他个初始值,除非你定义全局变量

BekeyChao

我建议你把方法改一下public double price(double a) {     if (a >= 200) {         return 0.85 * a;     } else if(a >= 100) {         return 0.95 * a;     } else {         return a;     } }有确定的返回值时最好直接返回

qq_国宝_0

Java规定: 作为返回值的变量需要进行初始化. 你需要类似这样的初始化: double b = 0;

慕少5814628

图片是这个  
随时随地看视频慕课网APP

相关分类

Java
我要回答