java.lang.OutOfMemoryError: Java heap space on stream.mapToInt()/ArrayLists
java.lang.OutOfMemoryError: Java heap space on stream.mapToInt()/ArrayLists
ArrayList<Integer> digitList = new ArrayList<Integer>();
ArrayList<Integer> newBase = new ArrayList<Integer>();
public void toX(int base, int oNum) {
while(base > 0) {
digitList.add(base % 10);
base /= 10;
}
int[] digits = digitList.stream().mapToInt(i->i).toArray();
for(int i = 0; i<digits.length/2; i++) {
int a = digits[i];
digits[i] = digits[digits.length -i -1];
digits[digits.length -i -1] = a;
}
System.out.println(Arrays.toString(digits));
for(int i = 0; i < digits.length; i++) {
total += digits[i];
}
System.out.println(total);
while(total >= 0) {
if(total >= oNum) {
newBase.add(total - oNum);
total -= oNum;
System.out.println(total);
}
else {
newBase.add(total);
}
}
int[] ans = newBase.stream().mapToInt(i->i).toArray();
System.out.println(Arrays.toString(ans));
}
此方法用于将 base 10 的数字转换为 baseX 的数字。它未完成,我不断收到多个错误:
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.ensureExplicitCapacity(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at BaseConverter.toX(BaseConverter.java:34)
第 33-35 行是:
else {
newBase.add();
}
我认为问题出在流上,但我对流和数组列表非常缺乏经验。
while(total >= 0) {
if(total >= oNum) {
newBase.add(total - oNum);
total -= oNum;
System.out.println(total);
}
else {
newBase.add(total);
}
}
如果您点击 else
分支,它将继续向 newBase
添加项目而不更改 total
,从而导致无限循环。
ArrayList<Integer> digitList = new ArrayList<Integer>();
ArrayList<Integer> newBase = new ArrayList<Integer>();
public void toX(int base, int oNum) {
while(base > 0) {
digitList.add(base % 10);
base /= 10;
}
int[] digits = digitList.stream().mapToInt(i->i).toArray();
for(int i = 0; i<digits.length/2; i++) {
int a = digits[i];
digits[i] = digits[digits.length -i -1];
digits[digits.length -i -1] = a;
}
System.out.println(Arrays.toString(digits));
for(int i = 0; i < digits.length; i++) {
total += digits[i];
}
System.out.println(total);
while(total >= 0) {
if(total >= oNum) {
newBase.add(total - oNum);
total -= oNum;
System.out.println(total);
}
else {
newBase.add(total);
}
}
int[] ans = newBase.stream().mapToInt(i->i).toArray();
System.out.println(Arrays.toString(ans));
}
此方法用于将 base 10 的数字转换为 baseX 的数字。它未完成,我不断收到多个错误:
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.ensureExplicitCapacity(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at BaseConverter.toX(BaseConverter.java:34)
第 33-35 行是:
else {
newBase.add();
}
我认为问题出在流上,但我对流和数组列表非常缺乏经验。
while(total >= 0) {
if(total >= oNum) {
newBase.add(total - oNum);
total -= oNum;
System.out.println(total);
}
else {
newBase.add(total);
}
}
如果您点击 else
分支,它将继续向 newBase
添加项目而不更改 total
,从而导致无限循环。