Java:如何在返回时对数组进行排序

时间:2014-05-02 22:13:01

标签: java arrays sorting

如何按字母顺序或数字顺序(IF参数)对IF语句中的数组进行排序?请注意,Arrays.sort()在使用时不会编译。我正在尝试对RETURNED值进行排序,而不是初始输入。

import java.util.Arrays;
import java.util.Scanner;

public class LibraryBookSort
{
    public static void main(String[] args)
    {
        String title, author;

        int x;
        int pages, sortBy;

        LibraryBook[] titleArray = new LibraryBook[5];
        LibraryBook[] authorArray = new LibraryBook[5];
        LibraryBook[] pagesArray = new LibraryBook[5];

        for (x = 0; x < 5; x++)
        {
            titleArray[x] = new LibraryBook();
            authorArray[x] = new LibraryBook();
            pagesArray[x] = new LibraryBook();
        }
        //User Input
        Scanner input = new Scanner(System.in);

        for (x = 0; x < 5; x++)
        {
            //TitleInput
            System.out.print("Enter the title of a book: ");
            title = input.nextLine();
            titleArray[x].setBook(title);

            //Author Input
            System.out.print("Enter the author of this book: ");
            author = input.nextLine();
            authorArray[x].setAuthor(author);

            //Page Input
            System.out.print("Enter the number of pages for this book: ");
            pages = input.nextInt();
            pagesArray[x].setPages(pages);

            input.nextLine();
        }

        //Book Organize input
        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: ");
        sortBy = input.nextInt();



        // Sort by title
        if(sortBy == 1)
        {
            for(x = 0; x < 5; x++)
            {

                System.out.println();
                System.out.println("Book ");
                System.out.println("Title: " + titleArray[x].getBook());
                System.out.println("Author: " + authorArray[x].getAuthor());
                System.out.println("Page Count: " + pagesArray[x].getPages());
            }
        }
        // Sort by author
        else
        if(sortBy == 2)
        {
            for(x = 0; x < 5; x++)
            {
                System.out.println();
                System.out.println("Book ");
                System.out.println("Author: " + authorArray[x].getAuthor());
                System.out.println("Title: " + titleArray[x].getBook());
                System.out.println("Page Count: " + pagesArray[x].getPages());
            }
        }
        // Sort by page count
        else
        if(sortBy == 3)
        {
            for(x = 0; x < 5; x++)
            {
                System.out.println();
                System.out.println("Book ");
                System.out.println("Page Count: " + pagesArray[x].getPages());
                System.out.println("Title: " + titleArray[x].getBook());
                System.out.println("Author: " + authorArray[x].getAuthor());
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果Arrays.sort无法编译,那么你就是在做错了。在任何情况下,您都需要定义自定义Comparator<LibraryBook>对象,每个对象都比较相关字段,然后使用这些对象进行排序。如果你要保留多个数据结构,也可以使它们成为SortedSet而不是普通数组。