How would I sort my inventory array alphabetically?
This is for a project that I am working on. I tried to use Arrays.sort(inventory); but it did not work.
Could someone please tell me what I am doing wrong?
Book class:
//Filename: BookStore.java
//Description: Purpose is to display what books are in stock and ISBN, title, author name, year, publishers name, and price.
//Author Name: David Finocchi
//Date: 01/19/2014
import java.util.Arrays;
import java.text.DecimalFormat;
class Book {
protected long isbn;
protected String title;
protected String autName;
protected int year;
protected String pubName;
protected double price;
protected int quantity;
// Constructor
public Book(long isbn, String title, String autName, int year, String pubName, double price) {
setIsbn(isbn);
setTitle(title);
setAut(autName);
setYear(year);
setPub(pubName);
setPrice(price);
}
// methods for class variables
public long getIsbn() {
return isbn;
}
public void setIsbn(long isbn) {
this.isbn = isbn;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAut() {
return autName;
}
public void setAut(String autName) {
this.autName = autName;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getPub() {
return pubName;
}
public void setPub(String pubName) {
this.pubName = pubName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double calTotal() {
return price;
}
//toString for the book array
public String toString() {
return "ISBM: " + isbn + "\n" + "Title: " + title + "\n" + "Author's Name: " + autName + "\n" + "Year Published: " + year + "\n" + "Publisher's Name: " + pubName + "\n" + "Price: $" + price + "\n\n";
}
}// end class Book
EBook class:
class EBook extends Book {
private String website;
//constructor and super
public EBook(long isbn, String title, String autName, int year,
String pubName, double price, String website) {
super(isbn, title, autName, year, pubName, price);
setWebsite(website);
}
// get and set
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public double discount() {
return price * 0.10;
}
DecimalFormat money = new DecimalFormat("$0.00");
//toString for the Book array
public String toString() {
return "ISBM: " + isbn + "\n" + "Title: " + title + "\n" + "Author's Name: " + autName + "\n" + "Year Published: " + year + "\n" + "Publisher's Name: " + pubName + "\n" + "Price: " + money.format(price) + "\n" + "Website: " + website + "\n" + "Discount: " + money.format(discount()) + "\n\n";
}
}//end class EBook
BookStore class (with main method):
public class BookStore {
//main method
public static void main(String[] args) {
// book array
Book[] inventory = new Book[5];
EBook a = new EBook(75260012L, "David goes to School", "David Shannon", 2010, "Shannon Rock", 11.98, "http://www.tinyurl.qqwert67o9");
Book b = new Book(7423540089L, "No David!", "David Shannon", 2009, "Shannon Rock", 12.99);
Book c = new Book(743200616L, "Simple Abundance", "Sarah Breathnach", 2009, "Scribner", 14.99);
EBook d = new EBook(78137521819L, "The very hungry caterpillar", "Eric Carle", 2005, "Philomel Books", 13.99, "http://www.tinyurl.fguopt8u90");
Book e = new Book(9781416987116L, "We're going on a bear hunt", "Michael Rosen", 2009, "McElderry", 15.99);
inventory[0] = a;
inventory[1] = b;
inventory[2] = c;
inventory[3] = d;
inventory[4] = e;
double total = 0.0;
//print text to user
System.out.println("Bookstore Items:" + "\n");
//print array
for (int i = 0; i < inventory.length; i++) {
System.out.println(inventory[i]);
total += inventory[i].getPrice();
}
//print total
DecimalFormat money = new DecimalFormat("$0.00");
System.out.printf("Total Inventory Value: " + money.format(total));
}
}// end class BookStore
ComporatorforBookclass. See docs.oracle.com/javase/tutorial/collections/interfaces/…Comparator? Wouldn'tComparablebe easier/more straightforward/actually work withArrays.sort()?Comparatorlet him have differentComparators so he can have different sorting strategies. It also let him not to change the domain model (is he allowed to?).Arraysclass hassort()method that takesComporatoras its second parameter. The tutorial I gave a link for coversComparableas well.Comparablewould be more straightforward. I suppose one could create their ownComparatorobject, but that's one more object floating around whereasComparableonly has one more method floating around. It also depends on their domain model, and how they want to do natural ordering.