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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宗士为 中级黑马   /  2012-5-8 10:04  /  1261 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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呢

5 个回复

正序浏览
楼主贴上去的代码错误还是比较多的,粘贴过来一编译错误提示还是很多的:
首先两个函数大括号丢失;
其次撇开你程序的正确性不说,如果能运行,也不会有你要的结果,也只会打印出三次“第一次遍历”;
最后还有泛型的加入等等,建议楼主静下心看视频,慢慢来
回复 使用道具 举报
本帖最后由 郭振 于 2012-5-8 10:44 编辑

你的问题是为什么第二次while()没有运行吗?因为你用的是同一个贴袋器, hasNext()如果仍有元素可以迭代,则返回 true,当你运行第一个while()迭代器迭代完返回false,说明后边没有元素了。当运行第二while指迭代器的针还在后边,没有元素就返回false,所以没有运行。
while(T.hasNext())
        {        
                Object s1 = T.next();
                System.out.println("第二次遍历。");
        }
回复 使用道具 举报
我说怎么看不懂他的代码呢!我在网吧,没法编译
回复 使用道具 举报
你的代码编译能通过?满世界的错。。。。
回复 使用道具 举报
代码 有问题  下面是改过的
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("第二次遍历。");
                        }
        
      
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马