我在我的程序中使用了下一个和以前的方法。它在语法上是正确的但输出错误。
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() + " ");
}
}
}
可以帮助我。
答案 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
时不要传递任何参数。