变量初始化问题。

变量初始化问题。

public void price(double a){
        double price2;
        if(a<100){
            price2=a;
        }else if(a<=199){
            price2=a;
        }else if(a>=200){
            price2=a;
            System.out.println("折后商品总价为:"+price2);    //①
        }
        System.out.println("折后商品总价为:"+price2);    //②
    }

以上代码为某个类中的一个方法。为什么②处会报变量未初始化错误?(①处不会报错)代码不是从上往下执行,然后我在if-else结构中不是给price2赋值了么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你写

if(a > 10){
    price = 1;
}
if(a <= 10){
    price = -1;
}

计算机是会报错的。

你写

if(a > 10){
    price = 1;
}else{
    price = -1;
}

计算机就不报错。

计算机编译的时候只做语法检查,if else从语法结构上就保证了,price必被赋值。

苍星乱舞 2020-04-11 10:52:17

因为你的赋值语句都是在条件语句里,计算机不知道你的条件是否包含了所有情况,即任何情况下你的price2都是会被赋值的。计算机就报了一个错误。

  • 提问者 慕容2892559 #1
    即任何情况下你的price2都是会被赋值的。计算机就报了一个错误。这句话看不明白啊。。。
    2020-04-11 10:55:31
  • 苍星乱舞 回复 提问者 慕容2892559 #2
    就是计算机不知道你条件语句是不是一定执行,计算机不做这个判断的。因为你这里是if 和 else if 和else if ,那有没有一个a的值都不满足这三个条件呢,如果有那不就会造成price2没被赋值吗。
    2020-04-11 11:17:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师