老师帮忙看下1-7练习的编码是否正确

来源:1-7 编程练习

星星和猫看月亮

2019-08-29 00:20:34

package com.imooc.book;


public class Book {

// 私有属性:书名、作者、出版社、价格

private String bookName, author, publishHouse;

double price;


// 通过构造方法实现属性赋值

public String demo() {

this.bookName = "小李飞刀";

this.author = "古龙";

this.publishHouse = "中国长安出版社";

this.price = 55.5;

String s = "书名:" + bookName + "\n作者:" + author + "\n出版社:" + publishHouse + "\n价格:" + price;

return s;

}


/*

* 通过公有的get/set方法实现属性的访问,其中: 1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10 2、限定作者、书名均为只读属性

*/

public String getBookName() {

return bookName;

}


public void setBookName(String bookName) {

this.bookName = bookName;

}


public String getAuthor() {

return author;

}


public void setAuthor(String author) {

this.author = author;

}


public String getPublishHouse() {

return publishHouse;

}


public void setPublishHouse(String publishHouse) {

this.publishHouse = publishHouse;

}


public double getPrice() {

return price;

}


public void setPrice(double price) {

if (price <= 10) {

System.out.println("图书价格最少10元");

price = 10.0;

}

this.price = price;

}

}



package com.imooc.book;


public class TestBook {


public static void main(String[] args) {

// //实例化对象,调用相关方法实现运行效果

Book book1=new Book();

book1.setBookName("红楼梦");

book1.setAuthor("曹雪芹");

book1.setPublishHouse("人民出版社");

book1.setPrice(3);

System.out.println("书名:"+book1.getBookName());

System.out.println("作者:"+book1.getAuthor());

System.out.println("出版社:"+book1.getPublishHouse());

System.out.println("价格:"+book1.getPrice());

System.out.println("=====================");

System.out.println(book1.demo());

}


}


写回答

1回答

好帮手慕酷酷

2019-08-29

同学你好,代码的思路很棒!但是在实现上还有些问题:

1、根据题目要求设计构造函数实现对属性赋值,同学的代码中没有实现有参构造函数。构造方法应该是方法名与类名相同,并且无返回类型的。

2、实现信息介绍方法描述图书所有信息的方法不正确。

3、根据题目要求,限定作者、书名均为只读属性,所以应该将setAuthor()方法和setPrice()方法删除

4、Book类中的price属性应该设置为private私有的。

5、测试方法中直接使用创建对象为属性赋值即可

修改后的代码如下:

Book

public class Book {

	// 私有属性:书名、作者、出版社、价格

	private String bookName, author, publishHouse;

	private double price;

	// 通过构造方法实现属性赋值
	


	public Book(String bookName, String author, String publishHouse, double price) {
		this.bookName = bookName;
		this.author = author;
		this.setPublishHouse(publishHouse);
		this.setPrice(price);
	}

	/*
	 * 
	 * 通过公有的get/set方法实现属性的访问,其中: 1、限定图书价格必须大于10,如果无效需进行提示,并强制赋值为10 2、限定作者、书名均为只读属性
	 * 
	 */

	public String getBookName() {

		return bookName;

	}

	public void setBookName(String bookName) {

		this.bookName = bookName;

	}


	public void setAuthor(String author) {

		this.author = author;

	}

	public String getPublishHouse() {

		return publishHouse;

	}

	public void setPublishHouse(String publishHouse) {

		this.publishHouse = publishHouse;

	}



	public void setPrice(double price) {

		if (price <= 10) {

			System.out.println("图书价格最少10元");

			price = 10.0;

		}

		this.price = price;

	}

	public String demo() {
		String s = "书名:" + bookName + "\n作者:" + author + "\n出版社:" + publishHouse + "\n价格:" + price;
		return s;
		
	}

TestBook:

public class TestBook {

	public static void main(String[] args) {

		// //实例化对象,调用相关方法实现运行效果

		Book book1 = new Book("红楼梦","曹雪芹","人民出版社",3);
		Book book2 = new Book("小李飞刀","古龙","人民长安出版社",55.5);
		System.out.println(book1.demo());
		System.out.println("=====================");
		System.out.println(book2.demo());


	}

}

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

0

0 学习 · 11489 问题

查看课程