老师和同学们请看一下我的代码,不知道哪里写错了。2-4的编程练习

老师和同学们请看一下我的代码,不知道哪里写错了。2-4的编程练习

谢谢大家

public class DisCountDemo {

    //根据商品总价输出折后总价

    public void discountPrice(float a){

        float discountPrice;

        if(a<100){

            discountPrice = a;

        } else if (100<a<199){

            discountPrice = a*0.95;

    

        } else if (a>200){

            discountPrice = a*0.85;

        }

        System.out.println("折后商品总价为: " + discountPrice);

    }

public static void main(String[] args) {

//定义对象

DisCountDemo disCount = new DisCountDemo();

//定义商品总价存放到变量中

float a = 150;


//调用方法,输出折后商品总价

disCount.discountPrice(float a);

}

}


正在回答 回答被采纳积分+1

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

2回答
irista23 2018-07-11 09:54:30

代码有如下问题:

1)去掉类型,这里是传参不是定义变量,只有定义的时候加类型

http://img1.sycdn.imooc.com//climg/5b4561ef000178e904450192.jpg

2)这种运算写法是不正确的,需要分开写,并且用&&连接,即else if (100<a &&a<199)

http://img1.sycdn.imooc.com//climg/5b4562280001ed3302630047.jpg

3)类似如下计算都需要强转成float后再去赋值,参考 discountPrice = (float)(a*0.95);

http://img1.sycdn.imooc.com//climg/5b4562ae0001740602660199.jpg

4)标点符合不能使用中文,必须使用英文

http://img1.sycdn.imooc.com//climg/5b4562ea0001e27e05240045.jpg

5)关于discountPrice赋初始值问题,如果是类的成员变量,可以没有初始值,系统会给默认值,但是在方法里的局部变量需要赋初始值

提问者 知名奶爸 2018-07-11 02:52:10

自己改了一下,运行起来了。但是有问题要问;

1   float discountPrice 为什么必须设为=0, 一定要在这里赋值吗?

我看到2.3课程里 float max;  并没有赋值,但是照样引用,所以为什么?

如果哪一张讲过这个赋值问题,请告诉我!谢谢了!


2.  System.out.println("折后商品总价为: " + discountPrice)

我自己是没看出来这句话写错在哪里。重写一遍就好了。麻烦高手解答这两问题

public class DisCountDemo {

    //根据商品总价输出折后总价

    public void discountPrice(double a){

        double discountPrice = 0 ;

        if(a<100){

            discountPrice = a;

        } else if (a>=100 & a < 200){

            discountPrice = (a*0.95);

   

        } else if (a>=200){

            discountPrice = (a*0.85);

        }

        System.out.println("折后商品总价为:"+ discountPrice);

       

    }

            public static void main(String[] args) {

                        //定义对象

                        DisCountDemo DX = new DisCountDemo();

           

                        //定义商品总价存放到变量中

                       

 

                        //调用方法,输出折后商品总价

                        DX.discountPrice(150);

                       

 

                        //调用方法,输出折后商品总价

                        DX.discountPrice(150);



  • 1 因为你这里用了if else语句,变量 discountPrice会在if else语句执行过程中某一步而被收回,意思是你上面一条if执行完了,下面的discountPrice就不存在了,所以要定义在if else外面,不赋值也是可以的。 2 出错原因就是我上面说的,discountPrice被系统收回了。
    2018-07-11 08:50:38
  • 1、不用赋值也可以,只是你第一次的程序是用float定义的discountPrice,第二次的代码是double定义的。这样为何会错误?是因为0.95和0.85是double类型,如果用float定义,值要写为0.95f和0.85f; 2、其实irista23的回答已经指出了,“System.out.println("折后商品总价为: " + discountPrice)”中右边的括弧用成了中文的括弧。而你从新写一遍的时候,应该是改掉了这个不经意错而已。
    2018-07-11 16:41:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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