for(int i = 0; i < colorOrder.size(); i++)
{
String colour = "";
colour = gui.getUserInputElement(i);
userColourInput.add(colour);
}
基本的に私は "サイモンは言う"ゲームを作成しています。私はデータを操作できるように、あるクラスに保持されているarrayListから別のクラスに保持されているarrayListにデータを移動しようとしています。 ColorOrderとuserColourInputは、配列リストであり、次のようにgetUserInputElement()メソッドは、次のとおりです。なぜこれがヒープOutOfMemoryエラーを生成していますか?
public String getUserInputElement(int index)
{
return userInput.get(index);
}
私は取得していますエラーメッセージは次のとおりです。
java.lang.OutOfMemoryErrorを:Javaヒープスペース
at java.util.Arrays.copyOf(Arrays.java:3210)
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at Game.gameLoop(Game.java:87)
at Game.<init>(Game.java:23)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at bluej.runtime.ExecServer$3.run(ExecServer.java:746)
GameLoopは以下の通りです。どの部分が必要なのかわからないので、全部投稿すればうまくいけばそれほど不便ではありません。 userColourInput
あなたは明確決して
public void gameLoop()
{
while(true)
{
String input = "";
boolean userInputFull = false;
int inputSize = 0;
if(orderPulled == false)
{
getColorOrder();
System.out.println("colorOrder set to order ArrayList");
userClicks = colorOrder.size();
System.out.println("User clicks set to " + userClicks);
orderPulled = true;
}
if(flashed == false)
{
pause(2000); //taking this out of here and putting in init or in this loop
} //causes a freeze, why?
if(flashed == false)
{
for(int i = 0; i < colorOrder.size(); i++)
{
gui.flashButton(colorOrder.get(i));
System.out.println("Flashing " + colorOrder.get(i));
pause(500);
}
gui.changeInstructionCopy();
flashed = true;
gui.enableButtons();
System.out.println("colorOrder size: " + colorOrder.size());
}
inputSize = gui.getUserInputSize();
if(inputSize == colorOrder.size())
{
gui.disableButtons();
for(int i = 0; i < colorOrder.size(); i++)
{
String colour = "";
colour = gui.getUserInputElement(i);
userColourInput.add(colour);
}
}
else
{
gui.enableButtons();
gui.printUserInputArray();
}
}
}
ここに十分な情報がありません。もっとコードを見る必要があります。特にgameLoopは、問題のある場所にある可能性が高いです。 –
実行可能な最小の例を提供できますか? –
ああ、私の謝罪。私は今それを投稿します。編集:掲示される。 –