Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: oppilaiden järjestäminen arvosanan mukaan

Tumettaja [19.04.2010 20:14:04]

#

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?

Antti Laaksonen [19.04.2010 20:19:52]

#

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

Tumettaja [19.04.2010 20:39:35]

#

Kiitos esimerkistä! :)

vehkis91 [19.04.2010 23:09:06]

#

Voisit myös tehdän luokan oppilaat ja laittaa sille jäsenmuuttujiksi nimen ja arvosanan. Sitten vaan tallennat taulukkoon oppilas-olioita. :)

Blaze [19.04.2010 23:32:54]

#

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

Sami [19.04.2010 23:38:48]

#

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
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta