やや些細な問題が手元にあります。そのため、カウンター c が for ループをインクリメントするのを止めようとしています。池が空いている場合にのみ、池のスポットを埋めようとしています。すでに別の魚 (白または赤) でいっぱいになっている場合は、カウンターを増やしたくありません。池のスポット (または要素) が満たされると、再び満たすことはできません。したがって、最終的には白身魚が 500 匹、赤身魚が 5 匹になるはずです。
この問題にアプローチするために間違った条件文を使用しているように感じます。カウンターがインクリメントされると、メソッド placeFish を呼び出した while ステートメントも同様に白または赤のカウンターをインクリメントしますが、これは私がやりたいことではありません。白/赤の魚の合計量が 500 でも 5 でもありませんが、理想的には増加させたくない場合に while カウンターが増加しているため、むしろ少なくなります。
for ステートメントの使用は正しいですか? しばらく試してみましたが、うまくいかなかったようです。
public static void fishes (int[][] pond) {
//pond has dimensions [50][50] in a different method that call fishes
//every element in the 2D array pond is already set to value 0
int whitefish = 500;
int redfish= 5;
int whitefishvalue = 1
int redfishvalue = 2
int white = 0;
int red = 0;
while (white < whitefish)
{
placeFish (pond, whitefishvalue);
white++;
}
while (red < redfish)
{
placeFish (pond redfishvalue);
redd++;
}
}
public static void placeFish(int[][] pond, int newFish) {
int a = random.nextInt(pond.length);
int b = random.nextInt(pond[0].length);
int spot = 0;
for (int c = 0; c < 1; c++)
{
if (pond [a][b] == spot)
{
pond[a][b] = newFish;
c++;
//How to stop c++ from incrementing?
}
}
}