首页 > 解决方案 > java计算arraylist平均值并一直为0

问题描述

我正在编写一个库程序。我有一门课代表对一本书或一篇论文的评论。复习课是这样的:

    private String review; //a review of the book or paper
    private int reviewRate; //the rate of the review
    private String firstName; //the first name of the review writer
    private String lastName; //the last name of the review writer
    private String itemName; //the name of the book or paper

我还有一类图书馆项目,代表一本书或一篇论文,我有一种方法来计算项目评论率的平均值和评论的数组列表。

protected ArrayList<Review> itemReviews; //array list that contains all of the reviews of the item
.
.
.
//method to calculate the average of the item reviews
    public int calculateReviewAverage ()
    {
        int average = 0; //initialize the average of the reviews rate
        int sum =0; //initialize the sum of the reviews rate
        if(itemReviews.isEmpty()) //if there are no reviews
        {
            return 0;
        }
        else //if there are reviews
        {
            for(int i=0; i<itemReviews.size(); i++) //loop through the reviews array
            {
                System.out.println(itemReviews.get(i).getReviewRate());
                sum += itemReviews.get(i).getReviewRate(); //sum all of the reviews rates
            }
            average = sum / itemReviews.size(); //calculate the average rate
            return average;
        }
    }

主要是我添加了一些评论,然后调用 calculateReviewAverage 方法,我总是得到 0。这就是我添加评论的方式:

if (command.equals("makeBookReview")) {
                String readerFirstName = input.next();
                String readerLastName = input.next();
                String bookName = input.next();
                String reviewSentence = input.next();
                String rateStr = input.next();
                int rate = Integer.parseInt(rateStr);

                Reader reader = new Reader (readerFirstName, readerLastName);
                Book book = new Book(bookName); //just to find the real book

                //create review
                Review review = new Review(readerFirstName, readerLastName, bookName, reviewSentence, rate);


                if (LibrarySys.makeBookReview(book, review)) { // if adding successfully, then true returned,
                    // the following message is written to the output file
                    MyFileLogWriter.writeToFileInSeparateLine("Successfully adding book review, reader: " + reader + " to item: " + book);
                } else {
                    MyFileLogWriter.writeToFileInSeparateLine("Failed to add book review");
                }

            }

之所以添加评论,是因为我打印了 itemReviews 数组列表并得到了这个:

[Review [review=Pipo, reviewRate=10, firstName=Inzagi, lastName=SetTheory, itemName=great_book_to_learn_coking]]
[Review [review=Massi, reviewRate=7, firstName=Rodregez, lastName=SetTheory, itemName=great_book_to_learn_coking]]
[Review [review=Leo, reviewRate=8, firstName=Messi, lastName=ErdosNumber, itemName=great_book_to_learn_coking]]
[Review [review=Leo, reviewRate=8, firstName=Messi, lastName=ErdosNumber, itemName=great_book_to_learn_coking]]
[Review [review=Leo, reviewRate=8, firstName=Messi, lastName=integral, itemName=great_book_to_learn_coking]]
[Review [review=Leo, reviewRate=7, firstName=Messi, lastName=DataMinig, itemName=great_book_to_learn_coking]]
[Review [review=Pipo, reviewRate=4, firstName=Inzagi, lastName=integral, itemName=great_book_to_learn_coking]]

我需要在代码中更改什么?

标签: javaclassobjectarraylist

解决方案


推荐阅读