Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代器在使用下一个函数时遇到问题_Java_Iterator_Next - Fatal编程技术网

Java 迭代器在使用下一个函数时遇到问题

Java 迭代器在使用下一个函数时遇到问题,java,iterator,next,Java,Iterator,Next,我已经编写了下面的代码,但我无法理解为什么它会给出java.util.ConcurrentModificationException 谁能帮帮我吗 提前谢谢 static LinkedList<Integer> l1 = new LinkedList<Integer>(); public static void main(String[] args) { Scanner ob= new Scanner(System.in); Itera

我已经编写了下面的代码,但我无法理解为什么它会给出java.util.ConcurrentModificationException

谁能帮帮我吗

提前谢谢

static LinkedList<Integer> l1 = new LinkedList<Integer>(); 
public static void main(String[] args) 
{
    Scanner ob= new Scanner(System.in);
            Iterator<Integer> l2=l1.iterator();
    ListIterator<Integer> l3=l1.listIterator();

    while(true)
    {
                    System.out.println("Enter number (press 0 to exit the loop: ");
        int number=ob.nextInt();
        if(number == 0)
        {
            System.out.println("****");
            break;
        }
        l3.add(number);
    }
            while(l2.hasNext())
                System.out.println(l2.next());

}
静态LinkedList l1=新LinkedList();
公共静态void main(字符串[]args)
{
扫描器ob=新扫描器(System.in);
迭代器l2=l1.Iterator();
ListIterator l3=l1.ListIterator();
while(true)
{
System.out.println(“输入数字(按0退出循环:”);
int number=ob.nextInt();
如果(数字==0)
{
System.out.println(“****”);
打破
}
l3.添加(编号);
}
while(l2.hasNext())
System.out.println(l2.next());
}

您获得mod异常是因为您在获得迭代器之后但在调用迭代器上的方法之前修改列表。您获得迭代器,然后添加到列表中(例如,修改它),然后尝试使用迭代器

两件事:

  • 把你的

    Iterator<Integer> l2=l1.iterator();
    
    Iterator l2=l1.Iterator();
    
    输入循环后面的行

  • 使用
    l1.add
    ,而不是
    l3.add
    ,并完全取消
    l3
    。没有理由(在此代码中)使用
    列表迭代器来添加到列表中


  • 嘎!尝试使用真正有意义的名称。
    l1
    是一个列表,但
    l2
    是一个迭代器?这不是一个好主意。您当前的代码甚至无法编译,因为使用的是
    hasnext
    而不是
    hasnext
    。请发布真正的代码来说明问题。您有
    l2.Next()
    而不是
    l2.next()
    (应该都是小写的)。Java是区分大小写的。@T.J.Crowder
    l2.next()
    很好。@ZouZou:在OP编辑它之前是
    l2.next()
    。(我的评论措辞很糟糕,如果你看到OP有
    l2.next()),那就只是模糊不清了。)
    在他们的代码中。我重新编写了一点。)