首页 文章

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

提问于
浏览
-1

我经常尝试研究和学习,但我已经碰壁了 . 通过学校作业,我们 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

    您可以像这样进行排序:

    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());
            }
        });
    
  • 0

    你的阵列看起来很好 . 这没什么不对的 .

    对数组进行排序并不难 . 谷歌搜索一秒会提供答案 . 如您所见here,排序适用于数字和字符 . 所以在你的情况下,它看起来像这样:

    Books.sort(bookName);
    

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

相关问题