我经常尝试研究和学习,但我已经碰壁了 . 通过学校作业,我们 Build 了一个数组来保存书店信息,然后希望我们按书名对其进行排序 .
我不确定我是否正确使用了数组,我可以使用一些有关排序此数组的技巧 .
//////////////////////////////////////到目前为止的代码
///书店类
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
Headers :B书
作者:J . R. R. Tolkien
年份:2013年
出版商:J . R. R. Tolkien
价格:5.00美元
ISBN:9780007525492
Headers :D书
作者:J . R. R. Tolkien
年份:2013年
出版商:J . R. R. Tolkien
价格:5.00美元
ISBN:9780007525492
Headers :C书
作者:J . R. R. Tolkien
年份:2013年
出版商:J . R. R. Tolkien
价格:5.00美元
网站:www.amazon.com
折扣:0.50美元
ISBN:9780007525492
Headers :一本书
作者:J . R. R. Tolkien
年份:2013年
出版商:J . R. R. Tolkien
价格:5.00美元
ISBN:9780007525492
Headers :电子书
作者:J . R. R. Tolkien
年份:2013年
出版商:J . R. R. Tolkien
价格:5.00美元
网站:www.amazon.com
折扣:0.50美元
总库存 Value :25.00美元
2 回答
您可以像这样进行排序:
1)在
Book
类中实现Comaparable接口:2)然后使用Arrays.sort(obect[])方法进行排序:
如果要对
Book
类的不同属性进行排序,则可以使用Comparator,例如:你的阵列看起来很好 . 这没什么不对的 .
对数组进行排序并不难 . 谷歌搜索一秒会提供答案 . 如您所见here,排序适用于数字和字符 . 所以在你的情况下,它看起来像这样:
我希望这能解决你的问题 .