![](/img/trans.png)
[英]java.lang.OutOfMemoryError with ArrayList and RecyclerView
[英]ArrayList and java.lang.OutOfMemoryError
我试图使程序创建一个初始大小为1的ArrayList
并用随机数填充它。 接下来, ArrayList
被清除的尺寸和ArrayList
增加1,再次充满了随机数。 我希望我的程序重复这些步骤,直到ArrayList
大小等于用户指定的数字为止。
因此,输出将例如:
1
3,8
6,3,7
...
ñ
到目前为止,我已经制作了:
public static void main (String args[]){
ArrayList<Integer> al = new ArrayList<Integer>();
Random rand = new Random();
int val=1;
int ii =1;
while(val<400){
for (int j = 0; j<ii;)
{
ii++;
val++;
pick = rand.nextInt(100);
al.add(pick);
}
System.out.println("Contents of al: " + al);
al.clear();
System.out.print("Array has been cleared: " + al);
}
有什么想法使它起作用吗?
您永远不会增加j。 您正在for循环内增加ii和val,正如我认为您实际上想要在while循环中进行的那样。 请尝试下面的示例。
ArrayList<Integer> al = new ArrayList<Integer>();
Random rand = new Random();
int val=1;
int ii =0;
while(val < 400){
for (int j = 0; j<ii; j++) {
int pick = rand.nextInt(100);
al.add(pick);
}
ii++;
val++;
System.out.println("Contents of al: " + al);
al.clear();
System.out.print("Array has been cleared: " + al);
}
如果给变量赋予有意义的名称,您的任务将容易得多。 例如
ArrayList<Integer> al = new ArrayList<Integer>();
Random rand = new Random();
int lineNumber = 1;
int lineLength = 0;
while(lineNumber < 400){
for (int randCount = 0; randCount < lineLength; randCount++) {
int pick = rand.nextInt(100);
al.add(pick);
}
lineLength++;
lineNumber++;
System.out.println("Contents of al: " + al);
al.clear();
System.out.print("Array has been cleared: " + al);
}
for (int j = 0; j<ii;) {
ii++;
val++;
pick = rand.nextInt(100);
al.add(pick);
}
是无限循环( j
始终为0
, ii
始终为正)。 您应该对其进行修复(根据所需的语义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.