动态地在数组中添加数组

时间:2016-11-04 10:33:40

标签: java arrays graph

我正在创建一个array2,即array2 = {i,j},我有另一个2D数组e_list = {}。现在我想将array2附加到e_list。

     int[][] G = {{0, 0, 0, 1, 1}, 
                  {0, 0, 1, 1, 1}, 
                  {0, 1, 0, 0, 0}, 
                  {1, 1, 0, 0, 1}, 
                  {1, 1, 0, 1, 0}, 
                 }; 

     int[][]  e_list = {};  //<-initialize 2D array here

     for (int i=0; i < 5; i++){
         for (int j=0; j < 5; j++){  
             if (G[i][j] == 1){                  
                     int[] array2 = {i,j};
                     System.out.print(array2[1]); 
                     System.out.print(","); 
                     System.out.println(array2[0]);
                     //----------------------------//<-- here I want to add this array2 into that 2D array e_list   

                     //this is one of my failed try;
                     for (int t=1; t <= 6; t++){
                         for (int tt=0; tt < 1; tt++){
                             e_list[t][tt] = array2[tt];
                         }                       
                     }

         }
        }    
       }

现在代码只是打印array2的第一个和第二个索引。但是我想要这样的东西; e_list = {{3,0},{4,0},...,{1,2}} 我想访问e_list,如e_list [0] [0] = 3,e_list [1] [0] = 4等

我在内部尝试了for循环......但是没有用。它说“java.lang.ArrayIndexOutOfBoundsException:0”

3 个答案:

答案 0 :(得分:1)

在为其分配值之前,您需要实际告诉e_list它有多大。像int[][] e_list = new int[5][5];而不是int[][] e_list = {};

否则e_list将没有大小,因此一旦你尝试在其中写入内容,你就会得到一个数组索引超出范围的异常(你的数组没有大小但是你还在尝试访问里面的东西)

有趣的是,您的//<-initialize 2D array here评论已经说明了您仍然需要做的事情:D但是写评论而不是实际做某事并不够。

答案 1 :(得分:0)

如果您将e_list设置为长度5,请将循环更改为小于5而不是等于6!

for (int t=1; t < 5; t++){
  for (int tt=0; tt < 1; tt++){
    e_list[t][tt] = array2[tt];
  }                       
}

答案 2 :(得分:0)

试试这个:

public static void main(String[] args) {

        int[][] G = {{0, 0, 0, 1, 1},
        {0, 0, 1, 1, 1},
        {0, 1, 0, 0, 0},
        {1, 1, 0, 0, 1},
        {1, 1, 0, 1, 0},};

        int[][] e_list = new int[100][2];  //<-initialize 2D array here

        System.out.println("e_list size " + e_list.length);

        for (int[] a: e_list) {
            System.out.println("a: " + Arrays.toString(a));
        }


        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (G[i][j] == 1) {
                    int[] array2 = {i, j};
//                    System.out.print(array2[1]);
//                    System.out.print(",");
//                    System.out.println(array2[0]);
                    //----------------------------//<-- here I want to add this array2 into that 2D array e_list   

                    //this is one of my failed try;

                    for (int t = 0; t < e_list.length; t++) {
                        int[] tmp= e_list[t];                             
                        if (tmp[0] == 0 && tmp[1] == 0) {
                            e_list[t] = array2;
                            break;
                        }                        
                    }
                }
            }
        }       

        for (int[] a: e_list) {
            System.out.println("a: " + Arrays.toString(a));
        }

    }

请注意,您需要事先设置e_list的正确大小。或者您可以使用一些List并动态添加元素。