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.