【发布时间】:2014-05-02 17:49:43
【问题描述】:
如何根据用户输入对该数组进行排序?在使用构造函数时,我将值返回到创建输出。我想做的是在收到用户希望如何安排他/她的输入之后,我想执行类似Arrays.sort(books[x].getBook());
但这不起作用。有没有办法安排每个输入的返回值?以下是我在每个if 语句中使用下面的代码时收到的错误,尽管getBooks() 存在得很好:
错误日志
LibraryBookSort.java:56: error: cannot find symbol
Arrays.sort(books[x].getBooks());
^
symbol: method getBooks()
location: class LibraryBook
1 error
代码
public class LibraryBookSort {
public static void main(String[] args) {
LibraryBook[] books = new LibraryBook[5];
for (int x = 0; x < 5; x++) {
books[x] = new LibraryBook();
}
Scanner input = new Scanner(System.in);
for (int x = 0; x < 5; x++) {
// Get title
System.out.print("Enter the title of a book: ");
String title = input.nextLine();
books[x].setBook(title);
// Get author
System.out.print("Enter the author of this book: ");
String author = input.nextLine();
books[x].setAuthor(title);
// Get page count
System.out.print("Enter the number of pages for this book: ");
int pages = input.nextInt();
books[x].setPages(pages);
input.nextLine();
}
System.out.println("How would you like to organize your values?");
System.out.println("Sort by title > Enter 1: ");
System.out.println("Sort by author's last name > Enter 2: ");
System.out.print("Sort by page count > Enter 3: ");
int sortBy = input.nextInt();
// Sort by title
if(sortBy == 1) {
//????;
}
// Sort by author
else if(sortBy == 2) {
//????;
}
// Sort by page count
else if(sortBy == 3) {
//????;
}
// Print sorted array >> Use of constructor
for(int x = 0; x < 5; x++) {
System.out.println();
System.out.println("Book ");
System.out.println("Title: " + books[x].getBook());
System.out.println("Author: " + books[x].getAuthor());
System.out.println("Page Count: " + books[x].getPages());
}}}
以下将使用比较器排列我的输入。但是,问题仍然存在,除了使用比较器之外,还有其他方法可以对这些数据进行排序吗?
class TitleComparator implements Comparator {
public int compare(Object book1, Object book2) {
String title1 = ((LibraryBook) book1).getBook();
String title2 = ((LibraryBook) book2).getBook();
return title1.compareTo(title2);
}}
【问题讨论】:
-
您的代码中的
Arrays.sort(books[x].getBooks());行在哪里?始终共享与异常相关的代码。 -
您使用的是 Java 8 吗?
-
看看比较器和 Arrys/Collections 类
-
我删除了 Arrays.sort()... 它不起作用
-
查看在java中对任何自定义对象进行排序,比较器对于直接排序是必需的,否则我们必须编写自己的代码替换涉及排序逻辑的比较器。所以通过一些排序逻辑并使用它。但在此之前与您的教授核实比较器..然后继续