2016-11-04 125 views
0

我提出的數組2,即數組2 = {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的第1和第2索引。但我想要這樣的東西; e_list = {{3,0},{4,0},...,{1,2}} 我想訪問e_list,例如e_list [0] [0] = 3,e_list [1] [0 ] = 4等

我曾嘗試爲循環......但沒有worked.it說「java.lang.ArrayIndexOutOfBoundsException:0」

+0

你的''e_list''是一個空數組,但你想要在第一個元素中設置一個值。空數組中沒有第一個元素。相應地初始化''e_list''。 – f1sh

回答

1

實際上你需要告訴e_list是以前有多大你可以給它賦值。像int[][] e_list = new int[5][5];而不是int[][] e_list = {};

否則e_list將沒有大小,因此只要你嘗試寫一些東西,你會得到一個數組索引越界異常(你的數組有沒有大小,但你試圖訪問它裏面的東西)

有趣的是,你的//<-initialize 2D array here評論已經說明了你仍然需要做的事:D但是寫評論而不是實際做某件事是不夠的。

+0

我已經像你說的那樣給它賦值了,但仍然是同樣的錯誤。我認爲循環有什麼問題嗎? –

+1

它是一樣的錯誤嗎?隨着0? – Mark

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]; 
    }      
} 
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並動態添加元素。