Java 对ArrayList中包含的对象进行操作

Java 对ArrayList中包含的对象进行操作,java,arraylist,iteration,Java,Arraylist,Iteration,我有一门课叫Book: public class Book { private String title; private boolean borrowed; public Book(String bookTitle) { // Store name of book and mark as not borrowed title = bookTitle; borrowed = false; } public void borrowed(){ // Set b

我有一门课叫Book:

public class Book {

private String title;
private boolean borrowed;

public Book(String bookTitle) {

    // Store name of book and mark as not borrowed
    title = bookTitle;
    borrowed = false;
}

public void borrowed(){
    // Set borrowed to true
    borrowed = true;
}

public void returned() {
    // Set borrowed to false
    borrowed = false;
}

public boolean isBorrowed() {
    // Return borrowed
    return borrowed;
}

public String getTitle() {
    // return title;
    return title;
}
}

还有一个叫做Library的类:

public class Library {                

private String address;
private ArrayList<Book> books = new ArrayList<Book>();

public Library(String Address) {

    address = Address;
}

private void addBook(Book book) {

    books.add(book);
}

private void borrowBook(String title) {

    boolean bookFound = false;                        
    // Find Book      
}
我需要完成借阅书方法,它将搜索数组列表以查找该书是否在图书馆中,然后使用book类的借阅方法将该书标记为已出租

到目前为止,我已经有了类似的东西,尽管我正在努力研究如何调用借来的方法或getTitle方法,以便能够对数组列表中包含的特定book对象进行操作

for (int i = 0; i < books.size(); i++) {

    if (books[i].getTitle() = title) {

         books[i].borrowed();
    }
}

您的逻辑检查应该是 图书[i].getTitle.equalstitle 或者说 title.equalsbooks[i].getTitle

您没有正确比较这两个字符串。 还考虑当其中一个或两个都为空时的情况。 应该用比较来代替

 if (books.get(i).getTitle().equals(title))
为了让它更好

private void borrowBook(String title) {

 boolean bookFound = false;                        
 // Find Book  
 for(Book book : books)
 {
    if (book.getTitle().equals(title)) 
    {
       bookFound = true;  
       book.borrowed();
       break;
    }
 }
 //...More stuffs you may want to do
}

到目前为止,您所拥有的甚至不会让人感到可笑,因为无法使用索引oberator[]访问的元素。您需要使用列表的名称。同样,对于比较使用equal运算符的字符串,这是不正确的,它只是在大多数情况下不同字符串实例的比较引用不相等,除非插入。您需要使用一个或多个方法


首先,签入if语句是错误的,即if books[i].getTitle=title 应该用,, ifbooks.geti.getTitle.equalstitle

在调用借来的函数之前,不要忘记检查借来的标志

最后的代码应该是这样的

    for (int i = 0; i < books.size(); i++)
    {
        if (books.get(i).getTitle().equals(title)) 
        {
            if(!books.get(i).isBorrowed())
                books.get(i).borrowed();
            else
            {
                //Inform user book already borrowed
            }
            break;
        }
    }

使用私有列表书籍=新建ArrayList;谢谢工作完美:
private void borrowBook(String title) {

 boolean bookFound = false;                        
 // Find Book  
 for(Book book : books)
 {
    if (book.getTitle().equals(title)) 
    {
       bookFound = true;  
       book.borrowed();
       break;
    }
 }
 //...More stuffs you may want to do
}
for (int i = 0; i < books.size(); i++) {

    if (books.get(i).getTitle().equals(title)) {

         books.get(i).borrowed();
    }
}
for (Book book : books) {
    if (book.getTitle().equals(title)) {
         book.borrowed();
    }
}
    for (int i = 0; i < books.size(); i++)
    {
        if (books.get(i).getTitle().equals(title)) 
        {
            if(!books.get(i).isBorrowed())
                books.get(i).borrowed();
            else
            {
                //Inform user book already borrowed
            }
            break;
        }
    }