gpt4 book ai didi

java - 我只能访问列表中的第一项

转载 作者:行者123 更新时间:2023-12-02 11:17:25 25 4
gpt4 key购买 nike

public class Catalogue() {
private List<Book> booksAvailable;
private List<Book> booksRented:

public Catalogue() {
booksAvailable.add(new Book("Matrix", 1999, new Genre("SciFi"), 3));
booksAvailable.add(new Book("Jurassic Park", 1999, new Genre("SciFi"), 3));
boosAvailable.add(new Book("Terminator", 1999, new Genre("SciFi"), 3));
booksRented = new LinkedList<Book> ();
}

public void rentBook() {
System.out.println("Rent a book:");
System.out.println("Enter the title of a book you want to rent: ");
String name = In.NextLine();
for (Book book: booksAvailable) {
if (book.getName.equals(name)) {
System.out.println("Renting " + name);
booksAvailable.remove(book);
booksRented.add(book);
break;
} else {
System.out.println("No such books found");
}
}
}
}

运行此代码时只能租用 Matrix 书。当我尝试租另一本书(例如《侏罗纪公园》)时,它说找不到书。当我关闭程序并再次运行它并尝试租用第二本书时,它再次显示未找到书籍。请帮我解决这个问题。我在这段代码中遇到什么问题。谢谢

最佳答案

正如其他人指出的那样,在迭代列表时修改列表是危险的。

我建议尝试使用 HashMap,特别是如果 name 是您正在查看的唯一字段。

public class Catalogue {
private Map<String, Book> booksAvailable;
private Map<String, Book> booksRented;

public Catalogue() {
booksAvailable = new HashMap<>();
booksAvailable.put("Matrix", new Book("Matrix", 1999, new Genre("SciFi"), 3));
booksAvailable.put("Jurassic Park", new Book("Jurassic Park", 1999, new Genre("SciFi"), 3));
booksAvailable.put("Terminator", new Book("Terminator", 1999, new Genre("SciFi"), 3));
booksRented = new HashMap<>();
}

public void rentBook() {
System.out.println("Rent a book:");
System.out.println("Enter the title of a book you want to rent: ");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
if (booksAvailable.containsKey(name)) {
Book book = booksAvailable.get(name);
System.out.println("Renting " + name);
booksAvailable.remove(name);
booksRented.put(name, book);
} else {
System.out.println("No such books found");
}
}
}

关于java - 我只能访问列表中的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50173310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com