Error:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Error:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
我的程序如下:
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)`
我已经在 运行 > 运行 配置 > Arguments 中更改了大小,如其他帖子中提到的相同错误,但后来我也得到了同样的错误。
我该怎么办?
当i == 2
时,while循环将永远执行,这就是抛出java.lang.OutOfMemoryError
的原因。
在arrL.add(i);
后添加一个break;
。
正如 Thomas 评论的那样,在这里使用 if 语句 更合适。
顺便说一句,java 命名参考Naming Conventions。对于您的情况,class 名称的首字母应大写。使用 EvenNumber
而不是 evenNumber
.
我的程序如下:
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)`
我已经在 运行 > 运行 配置 > Arguments 中更改了大小,如其他帖子中提到的相同错误,但后来我也得到了同样的错误。
我该怎么办?
当i == 2
时,while循环将永远执行,这就是抛出java.lang.OutOfMemoryError
的原因。
在arrL.add(i);
后添加一个break;
。
正如 Thomas 评论的那样,在这里使用 if 语句 更合适。
顺便说一句,java 命名参考Naming Conventions。对于您的情况,class 名称的首字母应大写。使用 EvenNumber
而不是 evenNumber
.