我正在编写一个带有数据类和可执行类的书店类型程序。我的问题是,当我显示所有6本书的数组时,它会显示同一本书的6行。我不确定我做错了什么。
以下是给出的说明:
课程测试书
这个类需要一个main方法和另外两个方法。
主要:
- 创建一个能够容纳六个Book对象的数组。
- 使用参数化构造函数指定此数组的前四个元素中的数据
- 使用no-arg构造函数在数组中创建剩余的两本书。
- 使用foreach循环处理数组,以显示此时的数组。
- 使用数组作为唯一参数调用finishArray()方法。
- 以数组作为唯一参数调用reduceBooks()方法。
- 重复上述步骤4所需的代码。
- 在折扣后显示最贵的书。
在finishArray()中:
- 这是一种无效方法。
- 使用setter方法指定数组中最后两本书的所有字段中的数据。
在reduceBooks()中:
- 此方法返回Book实例。
- 使用循环(任何类型)将阵列中每本书的价格降低40%。
- 确定折扣后最贵的书并将此书归还给主。
这是我的代码:
package week6.yedkois;
public class TestBook {
private static String _title;
private static String _author;
private static int _pages;
private static double _price;
public TestBook(String title, String author, int pages, int price){
this._title = title;
this._author = author;
this._pages = pages;
this._price = price;
}
public static void main(String[] args){
Book[] books = new Book[6];
Book book1 = new Book("Java Programming", "Liang", 1320, 149.99);
Book book2 = new Book("Rainbow Six", "Tom Clancy", 350, 10.99);
Book book3 = new Book("Tangerine", "Bloor", 180, 8.99);
Book book4 = new Book("End of Watch", "King", 320, 21.42);
Book book5 = new Book();
Book book6 = new Book();
books[0] = book1;
books[1] = book2;
books[2] = book3;
books[3] = book4;
books[4] = book5;
books[5] = book6;
for (Book u : books)
System.out.print(u);
}
public TestBook(){
Book[] books = new Book[6];
Book book5 = new Book("House", "House", 1320, 89);
Book book6 = new Book("Car", "Car", 1320, 89);
}
public static double reduceBooks(Book[] books){
return 0;
}
void finishArray(){
Book newbook = new Book();
newbook.setTitle(_title);
newbook.setAuthor(_author);
newbook.setPages(_pages);
newbook.setPrice(_price);
}
}
这是数据类
package week6.yedkois;
public class Book {
private static String _title;
private static String _author;
private static int _pages;
private static double _price;
public static int numBooks = 0;
public Book(){
for (int i = 0; i > 6; i++)
numBooks++;
}
public Book(String title, String author, int pages, double price)
{ super();
this._title = title;
this._author = author;
this._pages = pages;
this._price = price;
}
public String getTitle()
{
return _title;
}
public void setTitle(String title)
{
this._title = title;
}
public String getAuthor()
{
return _author;
}
public void setAuthor(String author)
{
this._author = author;
}
public int getPages()
{
return _pages;
}
public void setPages(int pages)
{
this._pages = pages;
}
public double getPrice()
{
return _price;
}
public void setPrice(double price)
{
this._price = price;
}
public String toString()
{
return "Book [Title: " + _title + ", Author: " + _author + ", Pages: " + _pages + ", Price: $" + _price +"]\n";
}
}
答案 0 :(得分:0)
您的问题是,您将实例变量设置为图书类
中的静态变量public class Book {
private static String _title;
private static String _author;
private static int _pages;
private static double _price;
public static int numBooks = 0;
一个静态变量,将在您课堂书的所有实例之间共享。因此,在您当前的代码之后,每次创建新实例时,您都将替换其值并使其可用于所有实例。
要解决您的问题,只需删除这些局部变量上的静态字,就可以了。
public class Book {
private String _title;
private String _author;
private int _pages;
private double _price;
public int numBooks = 0;