如您所见,我正在尝试从我在 MongoDB 中创建的图书编号列表中获取一本书。我可以从数据库中很好地取回书籍,但是当我尝试提取列出该书籍的编号时,我不能,因为这一行:
bookNum = book.get(选择 - 1);
下面列出了我的代码以供您引用。任何帮助将不胜感激。
//Find a book in the bookInfo database
Scanner input = new Scanner(System.in);
System.out.print("Enter the Title of a Book: ");
String book = input.nextLine();
int referenceNum = 0;
BasicDBObject query = new BasicDBObject();
query.put("Title",
new BasicDBObject("$regex", book)
.append("$options", "i"));
MongoCursor<Document> cursor = collection.find(query).iterator();
while(cursor.hasNext()) {
Document bookInfo = cursor.next();
referenceNum++;
System.out.println(referenceNum + ")" + bookInfo.getString("Title"));
}
System.out.print("\nEnter selection number (0 to quit): ");
Scanner inp = new Scanner(System.in);
int choice = inp.nextInt();
String bookNum;
// choice not 0 and not too high
if(choice > 0 && choice <= referenceNum) {
bookNum = book.get(choice - 1);
}
else {
bookNum = "0";
}
}
最佳答案
问题:从数据库获取的图书列表未存储在任何地方
以下是更新后的代码:
// Find a book in the bookInfo database
Scanner input = new Scanner(System.in);
System.out.print("Enter the Title of a Book: ");
String book = input.nextLine();
int referenceNum = 0;
BasicDBObject query = new BasicDBObject("Title", new BasicDBObject("$regex", book).append("$options", "i"));
MongoCursor<Document> cursor = collection.find(query).iterator();
List<String> books = new ArrayList<>();
while (cursor.hasNext()) {
Document bookInfo = cursor.next();
referenceNum++;
System.out.println(referenceNum + ")" + bookInfo.getString("Title"));
books.add(bookInfo.getString("Title"));
}
System.out.print("\nEnter selection number (0 to quit): ");
int choice = input.nextInt();
String bookNum;
// choice not 0 and not too high
if (choice > 0 && choice <= referenceNum) {
bookNum = books.get(choice - 1);
} else {
bookNum = "0";
}
// Closing the scanner
input.close();
关于java - 如何从编号列表中取回一本书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836287/