用Java编写程序:编写book类,要求: 1.类中包含属性书名、书号、主编、出版社、页数、价格等。 2.其中页数不能少于200页,否则输出错误信息,并强制赋值200,价格不可为负数。 3.要求提供所有成员的只读权限,提供价格的修改权限。 4.根据类的合理性原则设计其他方法。
时间: 2023-05-21 20:04:02 浏览: 764
非常好的问题!以下是一个可能的Java代码实现:
```
public class Book {
private String title;
private String id;
private String editor;
private String publisher;
private int pages;
private double price;
public Book(String title, String id, String editor, String publisher, int pages, double price) {
this.title = title;
this.id = id;
this.editor = editor;
this.publisher = publisher;
if (pages < 200) {
System.out.println("Error: Pages cannot be less than 200. Setting pages to 200.");
this.pages = 200;
} else {
this.pages = pages;
}
if (price < 0) {
System.out.println("Error: Price cannot be negative. Setting price to 0.");
this.price = 0;
} else {
this.price = price;
}
}
public String getTitle() {
return title;
}
public String getId() {
return id;
}
public String getEditor() {
return editor;
}
public String getPublisher() {
return publisher;
}
public int getPages() {
return pages;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
if (price < 0) {
System.out.println("Error: Price cannot be negative. Setting price to 0.");
this.price = 0;
} else {
this.price = price;
}
}
public void printInfo() {
System.out.println("Title: " + title);
System.out.println("ID: " + id);
System.out.println("Editor: " + editor);
System.out.println("Publisher: " + publisher);
System.out.println("Pages: " + pages);
System.out.println("Price: " + price);
}
}
```
这个类包含了书名、书号、主编、出版社、页数和价格等属性,以及一个构造函数、一些getter和setter方法以及一个打印信息的方法。在构造函数中,我们检查了页数和价格的合法性,并在必要时进行了修正。在setter方法中,我们只允许修改价格,而不允许修改其他属性。在打印信息的方法中,我们输出了所有属性的值。