簡體   English   中英

如何將數據存儲在二維arraylist中並使用double迭代器顯示它們?

[英]how to store data in a two dimensional arraylist and display them using double iterator?

迭代器有問題。 程序接受元素,將其存儲。 但在顯示時會崩潰。 為什么會這樣? 而且,顯示元素的正確方法是什么?

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();

}

問題是當你這樣做

Iterator<Integer> it2 = al2.iterator();

al2仍指向最后一個值

一種更簡單的方法是將其for語法

for (ArrayList<Integer> outer : al) {
   for (ArrayList<Integer> inner : outer) {
      System.out.print(inner + " ");
   }
}

您需要在外部循環的每次迭代中創建內部迭代器。 您無法重復使用它,因為它與單獨的數組列表綁定在一起,並且當外循環獲取下一個迭代器時,原始的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM