我经常尝试研究和学习,但我已经碰壁了。 通过学校作业,我们建立了一个数组来保存书店信息,然后希望我们按书名对其进行排序。
我不确定我是否正确使用了阵列,我可以使用一些有关排序此阵列的技巧。
//////////////////////////////////////到目前为止的代码
///书店类
import java.util.Arrays;
@SuppressWarnings("unused")
public class BookStore {//BookStore class
public static void main(String args[]) {
//数组
Book[] Books = new Book[5];
Books[0] = new Book(9780007525492L,"B book","J. R. R. Tolkien",2013,"Harper Collins", 5.00);
Books[1] = new Book(9780007525492L,"D book","J. R. R. Tolkien",2013,"Harper Collins", 5.00);
Books[2] = new EBook(9780007525492L,"C book","J. R. R. Tolkien",2013,"Harper Collins", 5.00,"www.amazon.com");
Books[3] = new Book(9780007525492L,"A book","J. R. R. Tolkien",2013,"Harper Collins", 5.00);
Books[4] = new EBook(9780007525492L,"E book","J. R. R. Tolkien",2013,"Harper Collins", 5.00,"www.amazon.com");
//排序
//输出
System.out.print("Bookstore Items:\n");
for (int counter=0;counter<Books.length;counter++){
System.out.println(Books[counter]);
}
//总库存值
double total = 0.0;
for (int i = 0; i < 5; i++){
total += Books[i].getPrice();
}
System.out.printf("\nTotal Inventory Value: $%.2f\n", total);
}
}
//预订课程
class Book{
private long isbnNumber; //ISBN
private String bookName;//Title
private String authName;//Author
private int pubYear; //year published
private String pubName;//Publishers name
private double price; //Price
// Book的构造函数
Book(long number, String bname, String aname, int year, String pname, double cost)
{
isbnNumber = number;
bookName = bname;
authName = aname;
pubName = pname;
pubYear = year;
price = cost;
}
// getisbnNumber:获取isbn
public long getIsbnNumber()
{
return isbnNumber;
}
// setisbnNumber:设置isbn
public void setIsbnNumber(long number)
{
}
// getbookName:获取图书名称
public String getBookName()
{
return bookName;
}
// setbookName:设置图书名称
public void setBookName(String bname)
{
}
// getauthName:获取作者姓名
public String getAuthName()
{
return authName;
}
// setAuthName:设置作者姓名
public void setAuthName(String aname)
{
}
// getpubName:获取发布者名称
public String getpubName()
{
return pubName;
}
// setpubName:设置发布者名称
public void setPubName(String pname)
{
}
// getPrice:返回图书的价格
public double getPrice()
{
return price;
}
// setPrice:设定图书的价格
public void setPrice(int cost)
{
}
// getpubYear:获得发布年份
public int getPubYear()
{
return pubYear;
}
// setpubYear:设置已发布的年份
public void setPubYear(int year)
{
}
//打印单个项目以进行显示
public String toString(){
return String.format("\n\n%s\t%s\n%s\t\t%s\n%s\t\t%s\n%s\t\t%d\n%s\t%s\n%s\t\t$%,.2f ","ISBN:\t", getIsbnNumber(),
"Title:", getBookName(), "Author:", getAuthName(),"Year:", getPubYear(), "Publisher:", getAuthName(), "Price:", getPrice());
}
}
//电子书子类
class EBook extends Book{
private String webSite;//web url
private String getWebSite() {
return webSite;
}
private double getDiscount() {
return discount;
}
private double discount;
//EBook constructor
EBook(long number, String bname, String aname, int year, String pname,
double cost, String web) {super(number, bname, aname, year, pname, cost);
discount = cost*.10;
webSite = web;
}
public String toString(){
return
String.format("\n\n%s\t%s\n%s\t\t%s\n%s\t\t%s\n%s\t\t%d\n%s\t%s\n%s\t\t$%,.2f\n%s\t%s\n%s\t$%,.2f ","ISBN:\t", getIsbnNumber(),"Title:", getBookName(), "Author:", getAuthName(),"Year:", getPubYear(), "Publisher:", getAuthName(), "Price:", getPrice(), "Website:",getWebSite(),"Discount:", getDiscount());
}
}
/////////////////////////////////////程序输出
书店物品:
ISBN:9780007525492
标题:B书
作者:J。R. R. Tolkien
年份:2013
出版商:J。R. R. Tolkien
价格:$ 5.00
ISBN:9780007525492
标题:D书
作者:J。R. R. Tolkien
年份:2013
出版商:J。R. R. Tolkien
价格:$ 5.00
ISBN:9780007525492
标题:C书
作者:J。R. R. Tolkien
年份:2013
出版商:J。R. R. Tolkien
价格:$ 5.00
网站:www.amazon.com
折扣:0.50美元
ISBN:9780007525492
标题:一本书
作者:J。R. R. Tolkien
年份:2013
出版商:J。R. R. Tolkien
价格:$ 5.00
ISBN:9780007525492
标题:电子书
作者:J。R. R. Tolkien
年份:2013
出版商:J。R. R. Tolkien
价格:$ 5.00
网站:www.amazon.com
折扣:0.50美元
总库存价值:25.00美元
答案 0 :(得分:1)
您可以像这样进行排序:
1)在Book
班级中实施Comaparable
界面:
public class Book implements Comparable<Book>{
@Override
public int compareTo(Book book) {
return this.bookName.compareTo(book.bookName);
}
}
2)然后使用Arrays.sort(obect[])方法进行排序:
// Sorting
Arrays.sort(Books); // Add this line
for (int counter = 0; counter < Books.length; counter++) {
System.out.println(Books[counter]);
}
如果要对Book
类的不同属性进行排序,则可以使用Comparator
,例如:
// Sorting based on Author name
Arrays.sort(Books, new Comparator<Book>() {
public int compare(Book book1, Book book2) {
return book1.getAuthName().compareTo(book2.getAuthName());
}
});
// Sorting based on ISBN
Arrays.sort(Books, new Comparator<Book>() {
public int compare(Book book1, Book book2) {
return new Long(book1.getIsbnNumber()).compareTo(book2.getIsbnNumber());
}
});
答案 1 :(得分:0)
你的阵列看起来很好。这没什么不对。
对阵列进行排序并不困难。谷歌搜索一秒会提供答案。 如您所见here,排序适用于数字和字符。 所以在你的情况下,它看起来像这样:
Books.sort(bookName);
我希望这能解决你的问题。