【问题标题】:Array list iterators next and previous not working数组列表迭代器下一个和上一个不起作用
【发布时间】:2015-10-09 19:48:21
【问题描述】:

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

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() + " ");
    }
  }
}

可以帮助我。

【问题讨论】:

  • 你有什么输出?你期待什么?
  • 你得到了什么错误或错误的输出?你期望什么输出?为什么?不要将你的班级命名为Arraylist
  • 类名没有问题,很好......谢谢

标签: java arraylist iterator


【解决方案1】:

来自List#listIteratorjavadoc(重点是我的):

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

问题就在这里:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-25
      • 2015-04-15
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多