我的计划如下:
import java.util.*;
class evenNumber {
ArrayList<Integer> arrL=new ArrayList<Integer>();
ArrayList<Integer> saveEvenNumber(int N) {
if(N<2)
System.out.println("N should be greater than 2");
else
for(int i=1;i<N;i++)
{
while(i%2==0)
{
arrL.add(i);
}
}
return arrL;
}
void printEvenNumber() {
Iterator<Integer> tr=arrL.iterator();
while(tr.hasNext())
{
System.out.print(tr.next());
System.out.print("*2, ");
}
}
}
public class First {
public static void main(String args[]) {
evenNumber eN=new evenNumber();
eN.saveEvenNumber(13);
eN.printEvenNumber();
}
}
我收到以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at list.evenNumber.saveEvenNumber(First.java:15)
at list.First.main(First.java:35)`
我在 Run&gt;中更改了尺寸运行配置&gt;参数如同其他帖子中提到的相同错误,但我也得到同样的错误。
我该怎么办?
答案 0 :(得分:6)
当i == 2
时,while循环将永久执行,这就是抛出java.lang.OutOfMemoryError
的原因。
在break;
之后添加arrL.add(i);
。
正如Thomas评论的那样,使用如果声明更合适。
BTW,请参阅Naming Conventions以获取Java命名。对于您的情况,类名的第一个字母应该大写。使用EvenNumber
代替evenNumber
。