我正在完成Java class 的作业问题,该 class 与实例化,数组和数组数据排序有关。这是问题:

创建一个名为LibraryBook的类,其中包含要保留的字段
设置和获取LibraryBook的标题,作者和方法
页数。将文件另存为LibraryBook.java。

编写一个实例化五个LibraryBook对象的应用程序,并
提示用户输入数据字段的值。然后提示用户
输入LibraryBooks应该按-标题排序的字段,
作者或页面数。执行请求的排序过程,然后
显示LibraryBook对象。将文件另存为
LibraryBookSort.java。

除了这本书,教授还增加了以下标准:

声明一个LibraryBook对象数组,并对它们进行排序
标题,作者或页面数,应用户要求。

这是我为LibraryBook.java编写的代码:

public class LibraryBook
{
        String bookTitle;
        String bookAuthor;
        int bookPageCount;

        public LibraryBook(String title, String author, int count)
        {
            bookTitle = title;
            bookAuthor = author;
            bookPageCount = count;
        }

        public String getBookTitle()
        {
            return bookTitle;
        }

        public String getBookAuthor()
        {
            return bookAuthor;
        }

        public int getBookPageCount()
        {
            return bookPageCount;
        }
}

这是我到目前为止为LibraryBookSort.java编写的代码:
import java.util.Arrays;
import java.util.Scanner;

public class LibraryBookSort
{
    public static void main(String[] args)
    {

    LibraryBook[] book = new LibraryBook[5];

    book[0] = new LibraryBook("Java Programming", "Joyce Farrell", 881);
    book[1] = new LibraryBook("Team Of Rivals", "Dorris Kearns Goodwin", 994);
    book[2] = new LibraryBook("1776", "Daivd McCullough", 400);
    book[3] = new LibraryBook("No Ordinary Time", "Dorris Kearns Goodwin", 768);
    book[4] = new LibraryBook("Steve Jobs", "Walter Isaacson", 656);

    for (int x = 0; x < book.length; ++x)
        book[x].getBookTitle();
    for (int x = 0; x < book.length; ++x)
        System.out.println(book[x].getBookTitle());

    for (int x = 0; x < book.length; ++x)
        book[x].getBookAuthor();
    for (int x = 0; x < book.length; ++x)
        System.out.println(book[x].getBookAuthor());

    for (int x = 0; x < book.length; ++x)
        book[x].getBookPageCount();
    for (int x = 0; x < book.length; ++x)
        System.out.println(book[x].getBookPageCount());
    }
}

上面的代码似乎可以正常工作并显示所有数据,尽管格式不正确。我希望数据如下所示:
Java Programming       Joyce Farrel               881
Team Of Rivals         Dorris Kearns Goodwin      994
1776                   Daivd McCullough           400
No Ordinary Time       Dorris Kearns Goodwin      768
Steve Jobs             Walter Isaacson            656

除了像上面那样格式化输出之外,我还需要使每种数据类型(标题,作者,页面)都可以通过用户选择进行排序。

在这一点上,我只是迷路了。到目前为止,这已经超出了我的技能水平。我希望有人可以给我一些指示/方向,以说明目前的去向。

最佳答案

关于格式,您只需要一个for循环即可显示所有详细信息,如下所示:

for (int x = 0; x < book.length; ++x){
    System.out.println(book[x].getBookTitle() + "\t" + book[x].getBookAuthor() + "\t" + book[x].getBookPageCount());
}

这样一来,您就可以一次获得有关每本书的所有必要信息,这些信息每次都用一个句子输出,其值由制表符(\t)分隔。

您现在正在执行的循环有一半是无用的,就像这样:
for (int x = 0; x < book.length; ++x)
    book[x].getBookTitle();

您没有在任何变量中获得标题,因此您只是在整个数组上执行循环而已。

对于排序选项,您可以查看Array的sort方法(如果允许使用),或者尝试自己实现排序方法,这可能会有助于您了解数组以及对数组进行迭代。

09-13 00:55