1.未全部实现课程效果,如何改进?

1.未全部实现课程效果,如何改进?

没有实现价格上的提示信息。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.ioomc.book;
 
public class Book {
 
    // 私有属性:书名、作者、出版社、价格
    private String BookName;
    private String BookAuther;
    private String PublicCompany;
    private double prize;
 
    // 通过构造方法实现属性赋值
    public Book(String BookName, String BookAuther, String PublicCompany, double prize) {
        this.BookName = BookName;
        this.BookAuther = BookAuther;
        this.PublicCompany = PublicCompany;
        this.setPrize(prize);
        //this.prize = prize;
        //!!!问题点,为什么这里换了一下写法就会有不同的效果?
    }
 
    /*
     * 通过公有的get/set方法实现属性的访问,其中: 1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10 2、限定作者、书名均为只读属性
     */
    public String getBookName() {
        return BookName;
    }
 
    public String getBookAuther() {
        return BookAuther;
    }
 
    public String getPublicCompany() {
        return PublicCompany;
    }
 
    public void setPublicCompany(String publicCompany) {
        this.PublicCompany = publicCompany;
    }
 
    public double getPrize() {
        return prize;
    }
 
    public void setPrize(double prize) {
 
        if (prize <  10) {
            System.out.println("图书价格最低10元");
            prize =10;
        else {
            System.out.println("价格" + prize);
        }
        this.prize = prize;
    }
 
    // 信息介绍方法,描述图书所有信息
    public void book() {
        System.out.println("书名:" + BookName);
        System.out.println("作者:" + BookAuther);
        System.out.println("出版社:" + PublicCompany);
        System.out.println("价格:" + prize);
        System.out.println("===============================");
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.ioomc.book;
 
public class BookTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Book one=new Book("红楼梦","曹雪芹","人民出版社",9);
        one.book();
        Book two=new Book("小李飞刀","古龙","中国长安出版社",55);
        two.book();
    }
 
}

3.效果

图书价格最低10元

书名:红楼梦

作者:曹雪芹

出版社:人民出版社

价格:10.0

===============================

价格55.0

书名:小李飞刀

作者:古龙

出版社:中国长安出版社

价格:55.0

===============================


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

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

1回答
好帮手慕珊 2017-11-12 11:20:50

有几个问题:

1、setPrize方法中把 this.prize = prize;这句话写到if-else的后面才行

2、构造方法中不用 this.prize = prize;这样就没有进行判断,应该调用setPrize方法this.setPrize(prize);  

3、注意方法名应该首字母小写,所以输出信息的Book方法最好改成book或者info。另外,变量名的命名规则也和方法名一致。而且这个方法不需要有参数,已经通过构造方法给成员变量赋值了,对象中就已经包含成员变量的信息了,所以此处把参数去掉,输出的就是成员变量了,bookName就能相当于this.bookName了

4、(double)10不用这么写,10是int类型,会自动转换为double类型的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 Ironxi_work #1
    老师,我重新修改了代码,但是你所指出的问题2我还是没有解决,修改好的代码在问题里,可能还需要您的指导。
    2017-11-12 22:25:56
  • 好帮手慕珊 回复 提问者 Ironxi_work #2
    就是把构造方法中的this.prize = prize;这条语句改成this.setPrize(prize);就可以了。(double)10这种形式还没改,去掉(double)
    2017-11-13 10:35:40
  • 提问者 Ironxi_work 回复 好帮手慕珊 #3
    谢谢老师,我实现了课程的效果,但还是有一点疑惑需要请教一下:构造方法中: this.setPrize(prize); //this.prize = prize;这两句话个人理解作用是一样的都是指明prize是哪一个prize,为什么会有不同的结果出来?是调用了setPrize的作用吗?
    2017-11-14 00:59:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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