beginner java Итерация метода arraylist для удаления и подсчета - PullRequest
1 голос
/ 29 марта 2020

Я новичок в изучении итераторов. У меня есть класс под названием Book, из которого я ссылаюсь на переменные. Меня просят использовать итератор и, пока l oop, удаляет все книги, опубликованные в данном году или ранее, из коллекции. Метод, над которым я работаю, находится в самом низу. Я не уверен, что мой метод полностью верен

public class Book
{
 private String title;
    private String author;
    private int yearPublished;
    private double bookPriceInCAD;

и книжный магазин основного класса

import java.util.ArrayList;
import java.util.Iterator;
public class BookStore
{

    // instance variables 
    private ArrayList<Book> bookList;
    private String businessName;


    public BookStore()
    {
        // initialise instance variables
        bookList = new ArrayList<Book>();
        businessName = "Book Store";

    }


    public BookStore(String inputBusinessName){
        setBusinessName(inputBusinessName);
        bookList = new ArrayList<Book>();
     }

    public void setBusinessName(String businessName){
        if(businessName !=null && !businessName.isEmpty()){
            this.businessName = businessName;
        } else if(businessName == null){
            throw new IllegalArgumentException("business Name cannot be null");
        } else if(businessName.isEmpty()){
            throw new IllegalArgumentException("business Name cannot be an empty String");
        }
     }

    public String getBusinessName(){
        return businessName;
    }
    /**
     * to return bookList
     */
    public ArrayList<Book> getBookList(){
        return bookList;
    }

    public void addBook(Book book){
      if(book!=null){
          bookList.add(book);
    }
    }

    public void getBook(int index) {
    if((index >= 0) && (index <= bookList.size())) {
        Book oneBook = bookList.get(index);                
        oneBook.displayDetails();
    }
    else{
        System.out.println("Invalid index position");
    }
    }
    /**
     * to search if book exists
     */
    public void searchBook(String title){
        for(Book b: bookList){
         String bookTitle = b.getTitle();
        if(bookTitle.equalsIgnoreCase(title)){
            b.displayDetails();
        } else{
            System.out.println("book not found");
    }
    }
    }  

Где я ошибаюсь?

  public int bookPublished(int yearPublished){
        Iterator<Book> iter = bookList.iterator();
        int count = 0;
        while(iter.hasNext()){
            Book aBook = iter.next();
            int getYearPublished = aBook.getYearPublished();
            if(getYearPublished <= aBook.getYearPublished()){
                iter.remove();
                count++;
            }
        }
        return count;

1 Ответ

2 голосов
/ 29 марта 2020

Вместо создания нового целочисленного значения:

int getYearPublished = aBook.getYearPublished(); if(getYearPublished <= aBook.getYearPublished()){

Используйте параметр, полученный в подписи метода (yearPublished):

if(yearPublished <= aBook.getYearPublished()){

Таким образом, ваш метод становится зависимым от значения, вставленного в него, а не только от aBook.getYearPublished().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...