在数组中查找并搜索double并返回其索引?这是一个数组元素交换方法吗?)

s-M*_*ern 11 java

这是我的第一个问题.这两个创建方法问题,是我参加的测验.创建一个方法,找到一个半径,双r.从2d圆阵列返回数组及其索引.如果找不到double r,则返回{-1,-1}.**

public int[] void findCircleWithRadius(Circle[][] circles, double r) {

    for(int i = 0; i<circles.length-1; i++) { //search the row
        for(int j = 0; j<circles[0].length; j++) { //search each column
            Circle temp = circles[i][j];
            if(temp == r) r = temp; 
            else return "{-1,-1}";
        }
     }

     return circles.indexOf(r);
}
Run Code Online (Sandbox Code Playgroud)

使用findCircleWithRadius方法创建交换圆的方法.

public static void swapCircles(Circles[][] circles, double r1, double r2) {

    Circle radius1 = r1.findCircleWithRadius();
    Circle radius2 = r2.findCircleWithRadius();
    Circle temp2 = radius2;

    radius2 = radius1;
    radius1 = temp2;
}
Run Code Online (Sandbox Code Playgroud)

sni*_*10m 4

第一个示例中需要修复的一些问题:

  1. 现在,j < circles[0].length意味着只搜索一列:column 0。您需要j < circles[i].length逐行搜索每一列。

  2. if (temp == r)意味着您正在比较 aCircle和 a double。我不熟悉 Circle 类,但我相信您会想要替换Circle temp = circles[i][j]double temp = circles[i][j].getRadius();.

  3. 你想一找到匹配就返回Circle,所以你有些事情有点倒退。通过我的新修订,if (temp == r)如果您找到正确的半径,现在将激活代码。这意味着在该if声明下方,您将需要return {i, j};. 这将返回当前圆(具有正确的半径)的索引。

  4. 如果没有一个半径测试返回 true,最后一条语句将被调用,所以在你有 的地方return circles.indexOf(r);,你会想要return {-1, -1};

  5. 由于数组是从 0 开始的,小于已经意味着 1 减去该值,因此您- 1不需要i < circles.length - 1

关于你的第二个例子:

您的findCircleWithRadius方法有两个参数: aCircle[][]和 a double。这意味着你需要给它那些。您创建的方法也不是从 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])
Run Code Online (Sandbox Code Playgroud)

总而言之,经过我的修改,完成的代码如下:

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;
}
Run Code Online (Sandbox Code Playgroud)

除此之外,其他一切看起来都很好!我希望你在测验中取得好成绩!如果您对我所说的内容还有任何疑问,请告诉我,以便我确保您完全理解。