2016-11-04 10 views
0

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]; 
         }      
        } 

     } 
     }  
     } 

riteこのコードでは、単に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」と言い、私は内側のループのために試してみました...しかし、それはしませんでしたあなたが実際にそれが前にあるどのように大きなe_list指示する必要があり

+0

あなたの '' e_list''は空の配列ですが、最初の要素に値を設定したいとします。空の配列には最初の要素はありません。それに応じて '' e_list''を初期化してください。 – f1sh

答えて

1

を値を割り当てることができます。 int[][] e_list = new int[5][5];の代わりにint[][] e_list = {};

そうでなければ、e_listにはサイズがないので、あなたが何かを書き込もうとすると、配列のインデックスが範囲外になります。

おもしろいことに、あなたの//<-initialize 2D array hereのコメントには、まだあなたがまだ必要としていることが正確に記載されています:Dしかし実際に何かをするのではなくコメントを書くだけでは不十分です。

+0

あなたが言ったように値を割り当てましたが、それと同じエラーです。 forループに何か問題があると思いますか? –

+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

これを試してください:あなたは、事前にe_listの適切なサイズを設定する必要が

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

    } 

注意を。または、Listを使用して要素を動的に追加することもできます。

関連する問題