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

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

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

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("===============================");
	}
}

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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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