黑马程序员技术交流社区

标题: 迭代器的问题 [打印本页]

作者: 宗士为    时间: 2012-5-8 10:04
标题: 迭代器的问题
class IrTest
{
    ArrayList a2 = new ArrayList();
        a2.add("张三");
                a2.add("李四");
                a2.add("王二");

        Iterator T = a2.iterator();

        public void BianLi()
    while(iteratorSub.hasNext()){
        System.out.println("第一次遍历");
    }
     while(iteratorSub.hasNext()){
        System.out.println("第二次遍历。");
    }
}
class TestBl
{
        public static void main(String[] args)
                IrTest a=new IrTest();
            a.BianLi();
}

// 返回结果 true  和  false   为什么第二次是flase呢
作者: 宗士为    时间: 2012-5-8 10:10
代码 有问题  下面是改过的
class IrTest
{
    public static void main(String[] args)
        {
    ArrayList a2 = new ArrayList();
        a2.add("张山");
                a2.add("李四");
                a2.add("王五");

        Iterator T = a2.iterator();

                        while(T.hasNext())
                        {
                                Object s1 = T.next();

                                System.out.println("第一次遍历:");
                        
                        }
                        while(T.hasNext())
                        {        
                                Object s1 = T.next();
                                System.out.println("第二次遍历。");
                        }
        
      
        }
}

作者: 蒋映辉    时间: 2012-5-8 10:10
你的代码编译能通过?满世界的错。。。。
作者: 胡元    时间: 2012-5-8 10:19
我说怎么看不懂他的代码呢!我在网吧,没法编译
作者: 郭振    时间: 2012-5-8 10:33
本帖最后由 郭振 于 2012-5-8 10:44 编辑

你的问题是为什么第二次while()没有运行吗?因为你用的是同一个贴袋器, hasNext()如果仍有元素可以迭代,则返回 true,当你运行第一个while()迭代器迭代完返回false,说明后边没有元素了。当运行第二while指迭代器的针还在后边,没有元素就返回false,所以没有运行。
while(T.hasNext())
        {        
                Object s1 = T.next();
                System.out.println("第二次遍历。");
        }
作者: 杨威    时间: 2012-5-8 10:54
楼主贴上去的代码错误还是比较多的,粘贴过来一编译错误提示还是很多的:
首先两个函数大括号丢失;
其次撇开你程序的正确性不说,如果能运行,也不会有你要的结果,也只会打印出三次“第一次遍历”;
最后还有泛型的加入等等,建议楼主静下心看视频,慢慢来





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2