比较if语句和2个arraylists

时间:2017-08-24 18:19:22

标签: java for-loop arraylist

我正在尝试一种方法来检查一本书是否被租用,然后该书是否在一个目录中。但我得到一个变量可能没有在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;
}

}

1 个答案:

答案 0 :(得分:0)

声明checkIsBookAvailableToRent时,请为其指定默认值,例如

boolean checkIsBookAvailableToRent =  false;

如果您的代码因任何原因未进入for循环,例如rentedBooksList.getRentedBooks()为空,则需要这样做。在这种情况下,函数不知道要返回什么。

一般来说,每当你声明变量时,给它们一个默认值是一个很好的经验法则(除非有理由不这样做)。这样你就不必担心这样的错误了。