亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在由文件 java 生成的數組列表中查找子字符串

在由文件 java 生成的數組列表中查找子字符串

Helenr 2022-01-12 16:04:12
我有一個文本文件,我從中創建了一個數組列表。每行 = 一個集合元素。有沒有辦法在該行中找到特定單詞,如果找到,將該行輸出到控制臺?現在我的那部分代碼看起來有點像這樣:protected static void FindBook() {    System.out.print("Author's name: ");    String neededauthor = sc.nextLine();    for (int k=0; k<=books.size(); k++) {        if (books.get(k).contains(neededauthor))             System.out.println(books.get(k));     }}但它給了我Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0更新:我已經嘗試修復它,現在異常消失了,但它也不起作用。輸入名稱后,該方法停止工作并且什么也不做,它應該輸出該行。我不明白這是怎么回事
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

正如其他答案已經說過的那樣,訪問不存在的索引時會出現問題:


books.get(books.size())

索引從0到size()-1,因此size()超出范圍。


您可以使用這樣的 foreach 循環完全避免索引并使代碼更簡單:


for (Book book: books)

    if (book.contains(neededauthor)) 

        System.out.println(book);

我假設的類型books是一些類型的集合Book。


查看完整回答
反對 回復 2022-01-12
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

我認為您的代碼看起來正確,但有一個問題。

for (int k=0; k<=books.size(); k++) {

如果k從 0 開始,它不能等于books.size(),因為這意味著它將for比 中的元素多經過一次循環books.size()。

嘗試將其更改為 for (int k = 0; k < books.size(); k++) {

除此之外,如果您的 ArrayList 中books有值,那么您的代碼應該可以工作。


查看完整回答
反對 回復 2022-01-12
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

用這部分k<books.size()代替k<=books.size()它應該只有不到。不小于等于。還將您的方法名稱更改為,findBook()因為它不遵循 Java 駱駝表示法


查看完整回答
反對 回復 2022-01-12
  • 3 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號