Ohjelmassani on on kaksi taulukkoa; oppilaiden nimet ja arvosanat.
public String[] oppilaat = { "Petri", "Matti", "Liisa", "Juha" }; public int[] arvosanat = { 7, 6, 9, 8 };
Kuinka saan järjesteltyä molemmat taulukot arvosanan mukaan isoimmasta pienimpään?
Siirrä molempien taulukoiden alkioita järjestelyssä:
public class Jarjestys { public static String[] oppilaat = {"Petri", "Matti", "Liisa", "Juha"}; public static int[] arvosanat = {7, 6, 9, 8}; public static void main(String[] args) { int maara = arvosanat.length; // kuplalajittelu for (int i = 0; i < maara; i++) { for (int j = 0; j < maara - 1; j++) { if (arvosanat[j] < arvosanat[j + 1]) { String vo = oppilaat[j + 1]; oppilaat[j + 1] = oppilaat[j]; oppilaat[j] = vo; int va = arvosanat[j + 1]; arvosanat[j + 1] = arvosanat[j]; arvosanat[j] = va; } } } // tulostus for (int i = 0; i < maara; i++) { System.out.println(oppilaat[i] + ", " + arvosanat[i]); } } }
Kiitos esimerkistä! :)
Voisit myös tehdän luokan oppilaat ja laittaa sille jäsenmuuttujiksi nimen ja arvosanan. Sitten vaan tallennat taulukkoon oppilas-olioita. :)
vehkis91 kirjoitti:
Voisit myös tehdän luokan oppilaat ja laittaa sille jäsenmuuttujiksi nimen ja arvosanan.
...implementoit sille Comparablen, tunget vaikka SortedSettiin ja nautit automaattisesta sorttauksesta :)
Tai sitten
public static void main(String[] args) { Oppilas[] oppilaat; // ... Arrays.sort(oppilaat); } class Oppilas implements Comparable<Oppilas> { public int compareTo(Oppilas toinen) { return this.arvosana - toinen.arvosana; } // Muu toteutus }
Aihe on jo aika vanha, joten et voi enää vastata siihen.