Kilka rzeczy do poprawienia w pierwszym przykładzie:
Teraz j < circles[0].length
oznacza, że tylko jedna kolumna jest wyszukiwane: kolumnę 0
. Będziesz chciał j < circles[i].length
przeszukiwać każdą kolumnę po wierszu.
if (temp == r)
oznacza porównanie Circle
i double
. Nie jestem zaznajomiony z klasą kółek, ale uważam, że będziesz chciał zastąpić zamiast Circle temp = circles[i][j]
przez double temp = circles[i][j].getRadius();
.
Chcesz wrócić, jak tylko znajdziesz pasujące Circle
, więc masz trochę rzeczy do tyłu. W przypadku moich nowych wersji, if (temp == r)
aktywuje teraz kod, jeśli znalazłeś właściwy promień. Oznacza to, że poniżej oświadczenia if
, będziesz chciał return {i, j};
. To zwróci bieżący okrąg (który ma prawidłowy promień).
Ostatnie polecenie zostanie wywołane, jeśli żaden z testów promienia nie zwróci wartości true, więc jeśli masz return circles.indexOf(r);
, będziesz potrzebować return {-1, -1};
.
Ponieważ tablice są 0 oparte, a mniej niż już oznacza jeden minus wartość, nie trzeba - 1
w i < circles.length - 1
Na drugim przykładzie:
Twoja metoda findCircleWithRadius
ma dwa paramaters: a Circle[][]
i double
. Oznacza to, że musisz je podać. Utworzona metoda nie jest również wywoływana z podwójnego, więc nie można powiedzieć, że r1.findCircleWithRadius();
Dodatkowo musisz użyć int[]
, którą przechodzi findCircleWithRadius
, aby uzyskać te Circle
. Dlatego twoje pierwsze linie w swapCircles
powinno być:
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])
Podsumowując, ukończony kod z moimi wersjami będzie wyglądał następująco:
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;
}
W przeciwnym razie, wszystko wygląda bardzo dobrze! Mam nadzieję, że dobrze się spisałeś w swoim quizie! Daj mi znać, jeśli masz więcej pytań na temat tego, co powiedziałem, więc mogę się upewnić, że rozumiesz to w pełni.
Aby zdobyć przedstawicieli, zadawaj dobre pytania i udzielaj przydatnych odpowiedzi. Zacznij od przeczytania następujących sekcji pomocy: [Jak zadać dobre pytanie?] (Http://stackoverflow.com/help/how-to-ask), [Jak napisać dobrą odpowiedź?] (Http://przepełnienie stosu.com/help/how-to-answer) – artdanil
Co kompilator mówi do tego kodu, szczególnie do tej instrukcji if? W jaki sposób obiekt Circle i double mogą być porównywane? I nawet jeśli było to możliwe: przeczytaj uważnie swój kod, ponieważ jeśli sprawdza on równość i mówi "jeśli są równi, przypisz drugi do pierwszego". Jaki to ma sens? – oddparity
Przy okazji: Czy ktokolwiek wspomina dwuwymiarową tablicę w pytaniu? – oddparity