0

0 と 1 のすべての可能な組み合わせを 4 次元で含む文字列配列の配列リストを作成しようとしています。つまり、[0,0,0,0] は 1 つの組み合わせであり、[0,0,0,1] は別の組み合わせです。$2^4$ の合計組み合わせがあるため、いくつかのネストされたループを使用してこの配列リストを生成しています。ただし、ループを実行しようとすると、「メモリ不足」エラーが発生します。見てみましょう:

String[] t4 = new String[4]; 

ArrayList<String[]> list4 = new ArrayList<String[]>();

for(int i=0; i<= 1; i++)
{
String count = Integer.toString(i);    
t4[0]=count;
list4.add(t4); 
 for(int j=0; j<= 1; j++)
 {
 String count1 = Integer.toString(j);    
 t4[1]=count1;
 list4.add(t4);
  for(int k=0; k<= 1; k++)
  {
  String count2 = Integer.toString(k);    
  t4[2]=count2;
  list4.add(t4); 
   for(int m=0; m<= 1;)
   {
   String count3 = Integer.toString(m);    
   t4[3]=count3;
   list4.add(t4);
   t4 = new String[4];
   }
  }
 }
}

私のループに何か問題がありますか?または、目的の配列リストを生成する別の方法はありますか?

4

4 に答える 4

2

あなたは変更しませんm

これを変える

for(int m=0; m<= 1;)

for(int m=0; m<= 1;m++)
于 2013-08-16T19:19:55.713 に答える
0

問題は、m++ がないことでした。また、ループは次のようになります。

for(int i=0; i<= 1; i++)
{
String count = Integer.toString(i);    
 for(int j=0; j<= 1; j++)
 {
 String count1 = Integer.toString(j);    
  for(int k=0; k<= 1; k++)
  {  
  String count2 = Integer.toString(k);    
   for(int m=0; m<= 1;m++)
   {
   String count3 = Integer.toString(m);    
   t4[0]=count;   
   t4[1]=count1;
   t4[2]=count2;    
   t4[3]=count3;
   list4.add(t4);
   t4 = new String[4];
   }
  }
 }
}
于 2013-08-16T19:44:56.033 に答える
0

内部の「FOR」ループで、変数「m」をインクリメントするのを忘れたため、無限ループに入ります。

于 2013-08-16T19:34:21.200 に答える