我正在尝试创建一个包含所有可能的0和1组合的字符串数组的数组列表,在四个维度中。也就是说,[0,0,0,0]是一个组合,[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];
}
}
}
}
我的循环有问题吗?或者是否有另一种方法来生成所需的数组列表?
答案 0 :(得分:8)
你有:
for(int m=0; m<= 1;)
你需要:
for(int m=0; m<= 1; ++ m)
否则,这是一个无限循环,最终会用list4
填充String[4]
,直到内存不足为止。
通过不递增m
,m
保持为0,循环条件始终为真。
答案 1 :(得分:2)
您不会修改m
更改此
for(int m=0; m<= 1;)
到
for(int m=0; m<= 1;m++)
答案 2 :(得分:0)
在你的内部'FOR'循环中,你忘了增加变量'm',因此它会进入无限循环。
答案 3 :(得分: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];
}
}
}
}