在您的第一个示例中需要解决的一些问题:
现在,j < circles[0].length
意味着只搜索一列: column 0
。您需要j < circles[i].length
逐行搜索每一列。
if (temp == r)
表示您正在比较 aCircle
和 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};
.
- 1
由于数组是从 0 开始的,并且小于已经意味着减去值,因此您不需要i < circles.length - 1
在你的第二个例子中:
您的findCircleWithRadius
方法有两个参数: aCircle[][]
和 a 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;
}
否则,其他一切看起来都不错!我希望你在测验中做得很好!如果您对我所说的任何内容有任何进一步的问题,请告诉我,以便我确保您完全理解这一点。