Ezt hogyan kell rendezni?
Javaról van szó.
Van egy tömb, amihez taroznak nevek, és hogy mennyit olvasott az illető (Hány oldalt) ÉN ezt így kezdtem el megoldani:
for(int i = 0; i < tomb.length-1; i++)
{
for (int j = i+1; j < tomb.length; j++)
{
if(tomb[i].konyvoldalszam > tomb[i+1].konyvoldalszam)
{
int csere = tomb[i].konyvoldalszam;
tomb[i].konyvoldalszam = tomb[j].konyvoldalszam;
tomb[j].konyvoldalszam = csere;
}
}
}
Ám kiiratásnál nem rendezi sorrendbe. HOgyan lehet ezt megoldani?
tomb[i].konyvoldalszam = tomb[j].konyvoldalszam;
helyett:
tomb[i]= tomb[j];
for(int i = 0; i < tomb.length-1; i++)
{
for (int j = i+1; j < tomb.length; j++)
{
if(tomb[i].konyvoldalszam > tomb[i+1].konyvoldalszam)
{
int csere = tomb[i].konyvoldalszam;
tomb[i] = tomb[j];
tomb[j].konyvoldalszam = csere;
}
}
}
így sem jó!
Ó bazz, nem csak abban az 1 sorban, hanem az egész sorban...
Ne az oldalszámot cseréld, hanem az egész struktúrát, ennél nem nagyon lehet egyszerűbben mondani...
if(tomb[i] > tomb[i+1])
{
int csere = tomb[i];
tomb[i] = tomb[j];
tomb[j] = csere;
}
de ez sem jó neki!
Na, ami neked kell az Arrays osztályból:
public static <T> void sort(T[] a, Comparator<? super T> c)
És ez úgy fog neked működni, hogy:
Arrays.sort(tomb, new Comparator<tömb_típusa>() {
.. public int compare(tömb_típusa o1, tömb_típusa o2) {
.. .. //return 0, ha o1 és o2 megegyezik
.. .. //return -1, ha o1 o2 előtt van
.. .. //return 1, ha o2 o1 előtt van
.. }
});
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!