私はArraylistの特定の行を削除する方法を理解しようとしています。しかし、それは私のどこにでもそのID番号を見つけることができないようですArraylist。 ユーザー入力を使用してArrayList内の特定の行を削除する方法
private Scanner setbookID(){
Scanner bookID = new Scanner(System.in);
System.out.println("Enter your book's ID number. ");
return bookID;}
ブックリスト
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));
}
}
は、テキストファイルを読み、文字列として出てくるのArrayListです。私のテキストファイル内の行のようになります。
B998 ; Aithiopika ; Heliodorus ; 1829
しかし「998」でユーザータイプであれば、それはのArrayListからこの行を削除しません。どのように私はこれを行うに行くことができるかについての任意のアイデア?イテレータはやや助けになるだろうか?
EDIT:これは、最初にArrayListにブックを追加した方法です。
private ArrayList<Book> readBooks(String filename) {
ArrayList<Book> lines = new ArrayList<>();
readTextFileB(filename, lines);
return lines;
}
private void readTextFileB(String filename, ArrayList<Book> lines)
// Reads the books.txt file.
{
Scanner s = null;
File infile = new File(filename);
try{
FileInputStream fis = new FileInputStream(infile);
s = new Scanner(fis);
} catch (FileNotFoundException e){
e.printStackTrace();
}
while(s.hasNextLine())
lines.add(new Book(s.nextLine()));
}
ここには多くの潜在的な原因があります。あなたはあなたのArrayListを見せてもらえますか?追加する前にIDから 'B'を削除しますか?それを 'Integer'として追加しますか? – Zircon
このIDが複数存在する可能性はありますか? javadocが示すように "public boolean remove(Object o) **存在する場合、指定された要素の最初のオカレンス**をこのリストから削除します**リストに要素が含まれていない場合は変更されません。だから、あなたはあなたがそれを削除しようとする前にリスト内でそれを見つけることができるかどうかをチェックすることから始めるべきです。 – kazu
[ArrayListに文字列の一部が含まれているかどうかを確認](https://stackoverflow.com/questions/6428005/check-if-arrayliststring-contains-part-of-a-string)またはhttps:// stackoverflow .com/questions/8192665/how-to-a-string-in-an-arraylistまたはhttps://stackoverflow.com/questions/6645379/partially-match-strings-in-case-of-list -containsstring –
Tom