最初の例で修正すべき点がいくつかあります。
現時点でj < circles[0].length
は、 column という 1 つの列のみが検索されていることを意味します0
。j < circles[i].length
すべての列を行ごとに検索する必要があります。
if (temp == r)
Circle
aと a を比較していることを意味しますdouble
。circle クラスには詳しくありませんが、Circle temp = circles[i][j]
withの代わりに置き換えたいと思うと思いますdouble temp = circles[i][j].getRadius();
。
一致する を見つけたらすぐに戻りたいCircle
ので、少し後方にあるものがあります。私の新しいリビジョンでif (temp == r)
は、正しい半径が見つかった場合にコードがアクティブになります。つまり、そのif
ステートメントの下では、 が必要になりreturn {i, j};
ます。これにより、現在の円 (正しい半径を持つ) のインデックスが返されます。
半径テストのいずれも true を返さない場合、最後のステートメントが呼び出されるため、 がある場合はreturn circles.indexOf(r);
が必要になりますreturn {-1, -1};
。
配列は 0 から始まり、1 よりも小さいということは 1 から値を引いた値を意味するため、必要ありません- 1
。i < circles.length - 1
2番目の例:
メソッドには aと afindCircleWithRadius
の 2 つのパラメーターがあります。つまり、それらを与える必要があります。作成したメソッドは double からも呼び出されないため、言うことはできません。さらに、これらの を取得するには、が渡す を
使用する必要があります。したがって、最初の行は次のようになります。Circle[][]
double
r1.findCircleWithRadius();
int[]
findCircleWithRadius
Circle
swapCircles
int[] rad1 = this.findCircleWithRadius(circles, r1); // Get the coordinates of the first circle by passing the 2D array, and the radius you're looking for.
int[] rad2 = this.findCircleWithRadius(circles, r2); // Get the coordinates of the second circle by passing the 2D array, and the radius you're looking for.
Circle radius1 = circles[rad1[0]][rad1[1]]; // Circle 1 is equal to the Circle in the array that has coordinates of the first index in the coordinates, and the second index of the coordinates. (circles[x, y])
Circle radius2 = circles[rad2[0]][rad2[1]]; // Circle 2 is equal to the Circle in the array that has coordinates of the first index in the coordinates, and the second index of the coordinates. (circles[x, y])
結論として、私のリビジョンで完成したコードは次のようになります。
public int[] void findCircleWithRadius(Circle[][] circles, double r) {
for(int i = 0; i < circles.length; i++) { //search the row
for(int j = 0; j < circles[i].length; j++) { //search each column
double temp = circles[i][j].getRadius();
if(temp == r)
return {i, j};
}
}
return {-1, -1};
}
public static void swapCircles(Circles[][] circles, double r1, double r2) {
int[] rad1 = this.findCircleWithRadius(circles, r1);
int[] rad2 = this.findCircleWithRadius(circles, r2);
Circle radius1 = circles[rad1[0]][rad1[1]];
Circle radius2 = circles[rad2[0]][rad2[1]];
Circle temp2 = radius2;
radius2 = radius1;
radius1 = temp2;
}
そうでなければ、他のすべてはかなり良さそうです!クイズがうまくいったことを願っています。私が言ったことについてさらに質問がある場合はお知らせください。これを完全に理解できるようにします。