A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李思静 中级黑马   /  2012-7-14 10:01  /  1541 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;

  2. class Hello{
  3.         public static ArrayList al;
  4.        
  5.         public static void main(String[] args) {
  6.                 al=new ArrayList();
  7.                 al.add("01");
  8.                 al.add("02");
  9.                 al.add("03");
  10.                 Iterator it=al.iterator();
  11.                 while(it.hasNext()){
  12.                         Object obj=(Object)it.next();
  13.                 if(obj.equals("01")){
  14.                         it.remove();
  15.                 }
  16.                 System.out.println(it.next());
  17.                 }
  18.                        
  19.         }
  20.                        
  21.        


  22. }
复制代码
02
Exception in thread "main" java.util.NoSuchElementException
        at java.util.ArrayList$Itr.next(ArrayList.java:794)
        at com.sijing.Hello.main(Hello.java:19)

4 个回复

倒序浏览
  • import java.util.*;
  • class Hello{
  •         public static ArrayList al;
  •         public static void main(String[] args) {
  •                 al=new ArrayList();
  •                 al.add("01");
  •                 al.add("02");
  •                 al.add("03");
  •                 Iterator it=al.iterator();
  •                 while(it.hasNext()){
  •                         Object obj=(Object)it.next();//你的程序是从这里开始迭代的,这个时候,指针指向"01"元素
  •                 if(obj.equals("01")){
  •                         it.remove(); //根据判断条件,你将"01"元素移除,根据ArrayList的特性,后面元素往前移,这时,指针指向"02"元素,因为后面还有值,所以此时依然
  • //满足循环条件,又执行了一次Object obj=(Object)it.next();指针指向"03"元素,不满足循环条件,退出.
  •                 }
  •                 System.out.println(it.next());这时候,在循环外面你还试图对"03"元素后面的元素进行访问,但实际上"03"后面已经没有元素了.所以报异常.
  •                 }

  • }
        一定要记得,只要出现了next()方法,就等于执行了一次指针后移动作,无论它出现在什么地方.
回复 使用道具 举报
在迭代过程中,尽量不要删除元素,否则很有可能会发生java.util.NoSuchElementException异常。
回复 使用道具 举报
韦念欣 发表于 2012-7-14 10:14
在迭代过程中,尽量不要删除元素,否则很有可能会发生java.util.NoSuchElementException异常。 ...

怎么改成已经解决?
回复 使用道具 举报
帅李 发表于 2012-7-14 10:19
怎么改成已经解决?

http://bbs.itheima.com/thread-18497-1-1.html
这里有方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马