迭代器有问题。程序接受元素,将其存储。但在显示时会崩溃。为什么会这样?而且,显示元素的正确方法是什么?
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num;
String dec;
ArrayList<ArrayList<Integer>> al = new ArrayList<ArrayList<Integer>>();
while(true){
ArrayList<Integer> al2 = new ArrayList<Integer>();
while (true){
System.out.print("Enter a number to store in inner arraylist or zero to exit inner arraylist:\t");
num = sc.nextInt();
if (num!=0){
al2.add(num);
}else{
break;
}
}
al.add(al2);
System.out.print("Exit(Y/y):\t");
dec=sc.next();
if(dec.equals("Y") || dec.equals("y")){
Iterator<ArrayList<Integer>> it = al.iterator();
Iterator<Integer> it2 = al2.iterator();
while(it.hasNext()){
while(it2.hasNext()){
System.out.print(it2.next() + " ");
}
System.out.println();
}
break;
}
}
sc.close();
}
您需要在外部循环的每次迭代中创建内部迭代器。您无法重复使用它,因为它与单独的数组列表绑定在一起,并且当外部循环获取下一个迭代器时,原始的it2就没用了。同样,在外部循环中创建它。就像是:
if(dec.equals("Y") || dec.equals("y")){
Iterator<ArrayList<Integer>> it = al.iterator();
// Iterator<Integer> it2 = al2.iterator();
while(it.hasNext()){
ArrayList<Integer> myList = it.next();
Iterator<Integer> it2 = myList.iterator();
while(it2.hasNext()){
System.out.print(it2.next() + " ");
}
System.out.println();
}
break;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句