私は戦艦プログラムを書いています。現在、ボートが上方向に進むかどうかを確認するために、数行のコードをテストしています。私のプログラムの設定方法は、たとえば、ユーザーが空母ボタンをクリックして空母を設定した場合、プログラムは AI の空母も設定する必要があります。ボートは、tlba と呼ばれるボタン配列に配置されます。aifirstclicki はランダム ジェネレーターによって設定されるため、ランダムな行が選択されます。aifirstclickj はランダムな列を選択し、2 つの組み合わせでボタン配列 (10x10) 上のスポットを特定します。プログラムに outofboundsexception エラーが発生した場合、つまりプログラムが最初のスポットを選択した場合、最終的に outofbounds 例外エラーが発生するように、次のコードを作成しました。これは、for ループが aiclickcount = までスポットを追加し続けるためです。 5, 最初からやり直して、5 つのスポットすべてを配置できるスポットが見つかるまで、別のスポットを選択する必要があります。相変わらず無限ループにはまってます。
int aiclickcount = 0;
while (directiondecider == 0)
{//up
aifirstclicki = generator.nextInt(10);
aifirstclickj = generator.nextInt(10);
while (aifirstclicki != 3 &&
aifirstclicki != 2 &&
aifirstclicki != 1 &&
aifirstclicki != 0)
{
for(int k=0; k<shiplength; k++)
{
tlba[aifirstclicki - k][aifirstclickj].setBackground(Color.RED);
aistringarray[aifirstclicki - k][aifirstclickj] = "aircraftcarrier";
aioccupied2d[aifirstclicki - k][aifirstclickj] = true;
aiclickcount++;
}
if (aiclickcount == 5)
{
shipset = true;
break;
}
}
System.out.println(shipset);
}
誰かが何が間違っているのか、または私の問題に対する別の解決策を知っていますか?