java - 我无法获取列表的总页数

标签 java

这是我到目前为止的代码,如果有人可以帮助我,我还需要计算总页数,但我无法管理它......

package assignment2;
import java.util.*;
import static java.lang.System.*;
public class Book {
    private String title;
    //Private class fields
    private int numOfPages;
    public String getTitle() {
        //Getter
        return title;
    }

    public void setTitle(String title) {
        //Setter
        this.title = title;
    }

    public int getNumOfPages() {
        return numOfPages;
    }

    public void setNumOfPages(int numOfPages) {
        this.numOfPages = numOfPages;
    }

    public Book(String title, int pages) {
        //A parameterized constructor with two parameters
        this.setTitle(title);
        this.setNumOfPages(numOfPages);
    }

    public static class Main {
        public static void main(String[] args) {
            List<Book> books = new LinkedList<>();
            books.add(new Book("The Catcher in the Rye", 190));
            //List of Book instances
            books.add(new Book("Song of Myself", 259));
            books.add(new Book("A Man Called Ove", 295));
            books.add(new Book("Lolita", 360));
            books.add(new Book("The Diary of a Young Girl", 352));
            books.add(new Book("The Tattooist of Auschwitz", 288));
            books.add(new Book("The Notebook", 214));
            List<Book> temporaryBook = new ArrayList<>(books);
            //Sublist that stops main method
            BookApp bkapp = new BookApp();
            int totalPages = bkapp.calcTotalPages(temporaryBook, 0);
            out.printf("Total number of books: %d\n", books.size());
            out.printf("Total pages: %d\n", totalPages);
        }
    }

    //End of Main class
    public static class BookApp {
        public int calcTotalPages(List<Book> bookList, int accum) {
            if (bookList.size() == 0)
                return accum;
            return calcTotalPages(bookList, accum + bookList.remove(0).getNumOfPages());
        }
    }

    //End of class BookApp
}

最佳答案

您可以按如下方式编写calcTotalPages:

public static int calcTotalPages(List<Book> bookList) {
    int sum = 0;
    for (Book book : bookList) {
        sum += book.getNumOfPages();
    }
    return sum;
}

或者使用Stream API,如下所示:

public static int calcTotalPages(List<Book> bookList) {
    return bookList.stream().mapToInt(Book::getNumOfPages).sum();
}

演示:

import java.util.LinkedList;
import java.util.List;

class Book {
    private String title;
    private int numOfPages;

    public Book(String title, int numOfPages) {
        this.title = title;
        this.numOfPages = numOfPages;
    }

    public String getTitle() {
        return title;
    }

    public int getNumOfPages() {
        return numOfPages;
    }
}

public class BookApp {
    public static class Main {
        public static void main(String[] args) {
            List<Book> books = new LinkedList<>();
            books.add(new Book("The Catcher in the Rye", 190));
            books.add(new Book("Song of Myself", 259));
            books.add(new Book("A Man Called Ove", 295));
            books.add(new Book("Lolita", 360));
            books.add(new Book("The Diary of a Young Girl", 352));
            books.add(new Book("The Tattooist of Auschwitz", 288));
            books.add(new Book("The Notebook", 214));

            int totalPages = calcTotalPages(books);
            System.out.printf("Total number of books: %d\n", books.size());
            System.out.printf("Total pages: %d\n", totalPages);
        }
    }

    public static int calcTotalPages(List<Book> bookList) {
        return bookList.size() == 0 ? 0 : bookList.stream().mapToInt(Book::getNumOfPages).sum();
    }
}

输出:

Total number of books: 7
Total pages: 1958

关于java - 我无法获取列表的总页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61944110/

相关文章:

java - 使用 RestFB 仅获取 Facebook 的最新帖子

java - android - 如何安全地停止正在运行的线程

java - 动态加载的命令链接不起作用

java - 扩展 JTable 并在 JFrame 中显示

java - 如何让 printf %x 类似于 python

java - "void is an invalid type for the variable buttonOK"- 单击按钮后尝试关闭对话框

java - 如何缓存 Apache CXF 为特定 Java 对象生成的编码 SOAP XML 以提高性能?

java - 停止 Swing 计时器

java - 你如何在java项目中嵌入Tomcat?

java - 如果 JUnit 覆盖率低于特定阈值,如何使 Maven 构建失败