Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find and search for a double in an array and return its indices? Is this an array element swap method?)

Tags:

java

This is my first question. These 2 create method questions, were on a quiz I took. Create a method, to find a radius, double r. Return the array and its indices, from the 2d circles array. If you can't find double r, return {-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);
}

Create a method to swap the circles, using the findCircleWithRadius method.

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;
}
like image 481
s-McGovern Avatar asked Aug 06 '13 04:08

s-McGovern


1 Answers

A few things to fix in your first example:

  1. Right now, j < circles[0].length means that only one column is being searched: column 0. You'll want j < circles[i].length to search every column by row.

  2. if (temp == r) means you're comparing a Circle and a double. I'm not familiar with the circle class, but I believe you'll want to replace instead of Circle temp = circles[i][j] with double temp = circles[i][j].getRadius();.

  3. You want to return as soon as you find the matching Circle, so you have some things a little backwards. With my new revisions, if (temp == r) will now activate the code if you have found the correct radius. That means below that if statement, you'll want return {i, j};. That will return the current circle's (which has the correct radius) indicies.

  4. The last statement will be called if none of the radius tests return true, so where you have return circles.indexOf(r);, you'll want return {-1, -1};.

  5. Since arrays are 0-based, and less than already means one minus the value, you do not need - 1 in i < circles.length - 1

On your second example:

Your findCircleWithRadius method has two paramaters: a Circle[][] and a double. That means you'll need to give it those. The method you created is not called from a double, as well, so you can't say r1.findCircleWithRadius(); Additionally, you need to use the int[] that the findCircleWithRadius passes you to get those Circle's. Therefore, your first lines in swapCircles should be:

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])

In conclusion, the completed code with my revisions will be as follows:

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;
}

Otherwise, everything else is looking pretty good! I hope you did well on your quiz! Please let me know if you have any further questions about anything I have said so I can make sure you understand this fully.

like image 175
snickers10m Avatar answered Sep 27 '22 22:09

snickers10m