Поиск и поиск двойника в массиве и возврат его индексов? Является ли это методом подкачки элементов массива?)

Это мой первый вопрос. Эти два вопроса создания метода были на викторине, которую я взял. Создайте метод, чтобы найти радиус, double 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);
}

Создайте метод для замены окружностей с помощью метода 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;
}

Ответ 1

Несколько вещей, которые нужно исправить в первом примере:

  • Прямо сейчас j < circles[0].length означает, что выполняется поиск только одного столбца: column 0. Вы хотите, чтобы j < circles[i].length выполнял поиск по каждому столбцу за строкой.

  • if (temp == r) означает, что вы сравниваете Circle и double. Я не знаком с классом круга, но я считаю, что вместо Circle temp = circles[i][j] вместо Circle temp = circles[i][j] вместо double temp = circles[i][j].getRadius(); вы захотите заменить

  • Вы хотите вернуться, как только найдете подходящий Circle, так что у вас есть некоторые вещи немного назад. С моими новыми версиями if (temp == r) теперь активирует код, если вы нашли правильный радиус. Это означает, что ниже этого оператора if вам нужно return {i, j};. Это вернет текущий круг (который имеет правильный радиус).

  • Последний оператор вызывается, если ни один из тестов радиуса не возвращает true, поэтому, если у вас есть return circles.indexOf(r);, вам нужно return {-1, -1};.

  • Поскольку массивы основаны на 0 и меньше, чем уже означает одно минус значение, вам не нужно - 1 в i < circles.length - 1

На втором примере:

Ваш метод findCircleWithRadius имеет два параметра: a Circle[][] и 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;
}

В противном случае все остальное выглядит довольно хорошо! Надеюсь, вы хорошо справились со своей викториной! Пожалуйста, дайте мне знать, если у вас возникнут дополнительные вопросы по поводу того, что я сказал, чтобы я мог полностью понять это.