书店库存数组书名称排序问题

时间:2014-09-05 07:47:11

标签: java arrays sorting inventory

我经常尝试研究和学习,但我已经碰壁了。 通过学校作业,我们建立了一个数组来保存书店信息,然后希望我们按书名对其进行排序。

我不确定我是否正确使用了阵列,我可以使用一些有关排序此阵列的技巧。

//////////////////////////////////////到目前为止的代码

///书店类

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美元

2 个答案:

答案 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);

我希望这能解决你的问题。

相关问题