程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> arraylist-JAVA小白問題:測試Iterable接口的Iterator迭代器方法時遇到的疑問

arraylist-JAVA小白問題:測試Iterable接口的Iterator迭代器方法時遇到的疑問

編輯:編程綜合問答
JAVA小白問題:測試Iterable接口的Iterator迭代器方法時遇到的疑問

圖片說明

創建個Arraylist集合,放幾個數據,然後用迭代器循環遍歷,同時想做個判斷,如果等於指定的數值的數據出現了,就刪除它,繼續迭代別的元素,單獨用remove刪除方法沒問題,但把它和next方法合起來用,就報錯了,求解,謝謝!

最佳回答:


既然你自己也標注了正確的和錯誤的,我給你提一下,你這裡有三個點:

分別是,it.hasnext(),第一個it.next(),第二個next.

先解釋一下it.hasnext()的意思:如果迭代器有下一個元素(並不會獲取,只是告訴你有沒有)。it.next():**獲取**下一個元素。(_你就是錯在這_)
那麼現在順著這兩個意思,你的思路跟著走一邊,就很清晰了。
你第一次走的流程:while(it.hasnext(有沒有1?)),it.next(拿到1),it.next(拿到2);
你第二次走的流程:while(it.hasnext(有沒有3?)),it.next(拿到3),it.next(拿到4);
你第三次走的流程:while(it.hasnext(有沒有5?)),it.next(拿到5),it.next(拿到6);
......
......
你最後一次走的流程:while(it.hasnext(有沒有49?)),it.next(拿到50),it.next(**拿到51**);
然後最後一次就出問題了。 你有51嗎?很明顯,你自己定義的就是50,所以沒有。然後。報錯
所以,結果就是這樣,你在調用一個方法時,應該明白這個方法的含義,這樣能減少你的BUG

至於你正確的,我就不贅述了,你可以自己跟著思考一邊,為什麼它不會報錯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved