在ArrayList中显示ArrayList

时间:2017-07-24 21:34:25

标签: java for-loop arraylist

我目前正在开展一个图书馆项目,在那里我有一个客户群,他们都有自己的帐户,而且所有客户都有书籍的arraylist。

我的LoanBook功能通过首先获取客户索引,然后将2个for循环中的书籍索引添加到bookarray中。就像这样:

public void loanBook() {
    Scanner in = new Scanner(System.in);
    boolean loop3 = true;
    System.out.println("So you wanna loan a book? Excellent choice.");
        while (loop3) {

            System.out.println("Search for the book you're looking for: ");
            String bookChoice = in.nextLine();
            for (int i=0; i<books.size() && loop3; i++) {

                if (books.get(i).toString().contains(bookChoice) == true) {
                    System.out.println("Looking for: " + books.get(i).toString() + "?");
                    System.out.println("press y to loan book or n to try again");
                    String choice1 = in.nextLine();
                    if (choice1.equalsIgnoreCase("y")) {

                        for (int j=0; j<customers.size() && loop3; j++) {
                            if (customers.get(j).getSignedIn() == true) {
                                customers.get(j).booksLoaned.add(books.get(i)); 
                                Timer.delayFunction();
                                System.out.println(customers.get(j).printBookList()); 
                                System.out.println("Returning to main menu");
                                loop3 = false;       
                            }
                        }
                    }

                    if (choice1.equalsIgnoreCase("n")) {
                        break;
                    }
                }
            } 
        }
    } 

问题在于,当我使用此方法从客户类打印客户个人书单时:

public ArrayList<Book> printBookList() {
    return booksLoaned;
}

它为所有客户显示相同的书单,因此如果我在客户1中添加一本书,则客户2也会这样。我的Customer类中的BooksLoaned arraylist不是静态的。

问题还没有解决,我已经改变了

customers.get(j).booksLoaned.add(books.get(i)); 

customers.get(j).booksLoaned.add(new Book(books.get(i).toString())); 

因此它现在为数组创建一个新对象,而不是引用其他书籍数组。仍然所有的账户似乎都分享了他们不应该分享的书籍。

0 个答案:

没有答案