java 图书馆系统 - 借书

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29229688/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 14:54:04  来源:igfitidea点击:

Library system - Borrowing a book

javaarraysarraylistsystembluej

提问by

I've been working on a library system for a few weeks now, but have a problem whilst trying to initialize the "borrow" feature for the system. I would really appreciate if someone could help me out. Here is the code I have so far for the "borrow" feature.

我已经在图书馆系统上工作了几个星期,但是在尝试初始化系统的“借阅”功能时遇到了问题。如果有人可以帮助我,我将不胜感激。这是迄今为止我拥有的“借用”功能的代码。

Library class - includes faulty borrow

图书馆类 - 包括错误借阅

private List collection;

私人列表收藏;

public Library()
{
    collection = new ArrayList<Book>();
}

public void addBook(Book book)
{
    collection.add(book);
}

public String searchTitle(String titleSearch) {
    if (titleSearch == null) return "\n No Books Avaliable ";
    for(int i = 0; i < collection.size(); i++){
        if(titleSearch.equalsIgnoreCase(collection.get(i).getTitle())){
            return collection.get(i).toString();
        }
    }
    return "\n No Books Avaliable "; //reachable only if no book found
}

public String toString()
{
    String total = "\n ";
    for (int i=0; i<collection.size(); i++)
    {
        Book b = collection.get(i);
        total = total + b.toString();
    }

    return total;
}
    public void borrowBook(String title) {
    int found = 0;
    for (Book b : collection) {
        if (collection.getTitle().equals(title)) {
            if (found == 0) {
                found = 1;
                }
            if (!book.isBorrowed()) {
                book.borrowed();
                found = 2;
                break;
            };
        }
    }
    if (found == 0) {
        System.out.println("Sorry, this book is not in our catalog.");
    } else if (found == 1) {
        System.out.println("Sorry, this book is already borrowed.");
    } else if (found == 2) {
        System.out.println("You successfully borrowed " + title);
    }
}

}

}

This is the Book class

这是 Book 类

public Book(int isbn, String author, String title, String genre, int  
 numcopies)
{

    this.isbn = isbn;
    this.author = author;
    this.title = title;
    this.genre = genre;
    this.numcopies = numcopies;


}

public int getISBN()
{
    return isbn;
}
public String getAuthor()
{
    return author;
}
public String getTitle()
{
    return title;
}
public String getGenre()
{
    return genre;
}
public String toString()
{
    return "\nISBN: " +isbn + "\nAuthor: " +author + "\nTitle: " +title + 
  "\nGenre: " +genre + "\nNumber Of Copies " +numcopies +"\n ";
}

}

}

采纳答案by Abhi

Change your borrowBookmethod as

将您的borrowBook方法更改为

 public void borrowBook(String title) 
 {
    int found = 0;
    for (Book b : collection) 
    {
        if (b.getTitle().equals(title)) 
        {
           if (found == 0) 
    {
            found = 1;
        }
        if (!b.isBorrowed()) 
    {
            b.borrowed=true;
            found = 2;
            break;
        }
    }
}
    if (found == 0) {
        System.out.println("Sorry, this book is not in our catalog.");
    } else if (found == 1) {
        System.out.println("Sorry, this book is already borrowed.");
    } else if (found == 2) {
        System.out.println("You successfully borrowed " + title);
    }
}

and add boolean borrowedvariable and boolean isBorrowed()method to Bookclass where isBorrowed()will just return the value of borrowedvariable.

并将boolean borrowed变量和boolean isBorrowed()方法添加到Book类中,其中isBorrowed()只会返回borrowed变量的值。

回答by FMC

Change

改变

if (collection.getTitle().equals(title)) 

to

if (b.getTitle().equals(title)) 

Right now you are calling the getTitle method on the collection, instead of the particular book you are currently on in your iteration.

现在您正在调用集合上的 getTitle 方法,而不是您当前在迭代中的特定书籍。

You also appear to be missing an isBorrowed method.

您似乎还缺少 isBorrowed 方法。