我正在尝试一种方法来检查一本书是否被租用,然后该书是否在一个目录中。但我得到一个变量可能没有在checkIsBookAvailableToRent上初始化错误。我想知道这意味着变量可能超出了范围。你能帮我改进一下这个方法吗?
package com.company.model;
import java.util.ArrayList;
import java.util.List;
public class BookDirectory {
private static List<Book> bookDirectoryList = new ArrayList<Book>();
RentDirectory rentedBooksList = new RentDirectory();
Book book = new Book("");
public boolean isBookAvailableToRent(String title){
boolean checkIsBookAvailableToRent;
book.setTitle(title);
for (Book bookInRentDirectory : rentedBooksList.getRentedBooks()) {
if (bookInRentDirectory.getTitle().equals(book.getTitle())) {
checkIsBookAvailableToRent = false;
}
else {
for (Book bookInBookDirectory : bookDirectoryList) {
if (bookInBookDirectory.getTitle().equals(book.getTitle())) {
checkIsBookAvailableToRent = true;
}
else {
checkIsBookAvailableToRent = false;
}
}
}
}
return checkIsBookAvailableToRent;
}
public List<Book> getBookDirectory() {
return bookDirectoryList;
}
}
答案 0 :(得分:0)
声明checkIsBookAvailableToRent
时,请为其指定默认值,例如
boolean checkIsBookAvailableToRent = false;
如果您的代码因任何原因未进入for
循环,例如rentedBooksList.getRentedBooks()
为空,则需要这样做。在这种情况下,函数不知道要返回什么。
一般来说,每当你声明变量时,给它们一个默认值是一个很好的经验法则(除非有理由不这样做)。这样你就不必担心这样的错误了。