数组列表迭代器next和previous不工作

时间:2015-10-09 19:48:22

标签: java arraylist iterator

我在我的程序中使用了下一个和以前的方法。它在语法上是正确的但输出错误。

import java.util.*;
class Arraylist{
public static void main(String args[]){
    ArrayList<Integer> number = new ArrayList<Integer>(5);      
    int n=0;
    Scanner input= new Scanner(System.in);
    n=input.nextInt();
    while(n>0){
        number.add(n%10);
        n/=10;
    }
    ListIterator<Integer> itr = number.listIterator(number.size());
    while(itr.hasNext()){
        System.out.print(itr.next() + " ");
    }
    System.out.println("Modifier");
    while(itr.hasPrevious()){
        System.out.print(itr.previous() + " ");
    }
  }
}

可以帮助我。

2 个答案:

答案 0 :(得分:1)

您在列表结尾后初始化ListIterator itr,因此第一个while循环将不执行任何操作,因为itr.hasNext()将立即返回false在第一次迭代。

答案 1 :(得分:1)

来自List#listIterator javadoc(强调我的):

  

返回此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始

问题在于:

ListIterator<Integer> itr = number.listIterator(number.size());
                                            //  ^----here---^

number#size将使迭代器从列表的当前大小之后的某个位置开始,因此调用itr#hasNext将返回false

解决您的问题,请在调用List#listIterator时不要传递任何参数。