[英]beginner java Iterating arraylist method to remove and count
我是学习迭代器的新手。 我有一个名为 Book 的类,我正在从中引用变量。 我被要求使用迭代器和 while 循环从集合中删除给定年份或更早出版的所有书籍。 我正在研究的方法是最底层的。 我不确定我的方法是否完全正确
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;
而不是创建一个新的整数值:
int getYearPublished = aBook.getYearPublished(); if(getYearPublished <= aBook.getYearPublished()){
使用您在方法签名 ( yearPublished
) 中收到的参数:
if(yearPublished <= aBook.getYearPublished()){
这样,您的方法将取决于插入其中的值,而不仅仅是aBook.getYearPublished()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.