当用户输入图书ID编号时,我正试图找出如何删除 Arraylist 中的特定行。但是,它似乎无法在 Arraylist 中的任何位置找到该ID号。
compile 'com.github.bumptech.glide:glide:4.0.0'
private void removeBook()
// Removes a certain book from the Book List.
{
Scanner IDS = setbookID();
int idNum = IDS.nextInt();
if(bookList.contains(idNum)){ //problem
bookList.remove("B"+Integer.valueOf(idNum));
}
}
bookList是一个ArrayList,它读取文本文件并以String形式出现。我的文本文件中的一行如下所示:
private Scanner setbookID(){
Scanner bookID = new Scanner(System.in);
System.out.println("Enter your book's ID number. ");
return bookID;}
但是,如果用户键入“998”,则不会从ArrayList中删除此行。关于如何做到这一点的任何想法?迭代器会有所帮助吗?
编辑:这就是我首先将书籍添加到ArrayList的方式。
B998 ; Aithiopika ; Heliodorus ; 1829
private ArrayList<Book> readBooks(String filename) {
ArrayList<Book> lines = new ArrayList<>();
readTextFileB(filename, lines);
return lines;
}
答案 0 :(得分:0)
您的代码存在多个问题。无论您是要从列表中删除Book对象,都不清楚您要实现的目标。如果是这样,那么你需要比较book对象的ID字段(使用迭代器),假设你的Book类如下所示:
class Book {
int id;
Book(int id) {
this.id = id;
}
}
如果以上情况不是方案,那么您的列表是Book对象的列表,那么如何在删除方法bookList.remove("B"+Integer.valueOf(idNum));
上传递String作为参数
你应该在这里传递Book对象或索引号。