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
Library system - Borrowing a book
提问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 borrowBook
method 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 borrowed
variable and boolean isBorrowed()
method to Book
class where isBorrowed()
will just return the value of borrowed
variable.
并将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 方法。