Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: java: lista-ongelmia

Eetu [05.11.2012 00:33:04]

#

Tehtävässä tarkoitus tulostaa luokassa opintojakso parametrina välitetyt string-tyyppiset tiedot sekä opiskelijanumerot 10 kertaa lähtien luvusta 1000.

Eli for-silmukoissa olevat tulostukset eivät toimi, koska getNimi() metodia ei löydy kummastakaan oliolistasta. Tehtävä onnistuu käyttämällä taulukoita mutta listoilla tulee ongelmia.

package harjoitus2.pkg1;

/**
 *
 * @author 33tu
 */
public class Harjoitus21 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Opintojakso opintojakso = new Opintojakso();

        for (int i = 0; i < opintojakso.getosasuoritukset().size(); i++) {
            System.out.println(opintojakso.getosasuoritukset().get(i).getNimi());
        }

        for (int i = 0; i < 10; i++) {
            Opiskelija opiskelija = new Opiskelija(i+1000);
            opintojakso.setOpiskelija(opiskelija);
        }

        for (int i = 0; i < opintojakso.getOpiskelija().size(); i++) {
            System.out.println(opintojakso.getOpiskelija().get(i).getNimi());
        }
    }
}

Alustajassa tehdään neljä osasuoritus-oiota, joihin sijoitetaan tietoa ja viedään oliolistaan osasuoritukset. Tarkoituksena on luoda vahva kooste luokkien osasuoritus ja opintojakso välille. Luokkien opiskelija ja opintojakso välille tarkoitus on luoda löyhä kooste ja tähän luokkaan on tehty metodi, jossa otetaan parametrina vastaan olio opiskelija main metodista ja kyseinen olio sijoitetaan aina oliolistaan opiskelija.

package harjoitus2.pkg1;

import java.util.ArrayList;

/**
 *
 * @author 33tu
 */
public class Opintojakso {

    public ArrayList <Osasuoritus> osasuoritukset = new ArrayList();
    public ArrayList <Opiskelija> opiskelija = new ArrayList();

    public Opintojakso() {
        Osasuoritus osasuoritus = new Osasuoritus();
        osasuoritus.setNimi("osatentti 1");
        osasuoritukset.add(osasuoritus);

        osasuoritus = new Osasuoritus();
        osasuoritus.setNimi("harjoitustyö 1");
        osasuoritukset.add(osasuoritus);

        osasuoritus = new Osasuoritus();
        osasuoritus.setNimi("osatentti 2");
        osasuoritukset.add(osasuoritus);

        osasuoritus = new Osasuoritus();
        osasuoritus.setNimi("harjoitustyö 2");
        osasuoritukset.add(osasuoritus);
    }

    public ArrayList getosasuoritukset() {
        return osasuoritukset;
    }

    public void setOpiskelija(Opiskelija opiskelija) {
        this.opiskelija.add(opiskelija);
    }

    public ArrayList getOpiskelija() {
        return opiskelija;
    }
}

Luokka ottaa vastaan main metodista int-tyyppistä tietoa alustajaan.

package harjoitus2.pkg1;

/**
 *
 * @author 33tu
 */
public class Opiskelija {

    private int nro;

    public Opiskelija(int nro) {
        this.nro = nro;
    }

    public int getNro() {
        return nro;
    }
}

Tässä ei ole paljon selitettävää.

package harjoitus2.pkg1;

/**
 *
 * @author 33tu
 */
public class Osasuoritus {

    private String nimi;

    public String getNimi() {
        return nimi;
    }

    public void setNimi(String nimi) {
        this.nimi = nimi;
    }
}

Metabolix [05.11.2012 00:34:15]

#

Funktioista getosasuoritukset ja getOpiskelija pitäisi palauttaa oikeanlaiset listat (ArrayList<Osasuoritus> ja ArrayList<Opiskelija>) eikä vain epämääräistä listaa (ArrayList).

Eetu [05.11.2012 00:38:33]

#

Kiitoksia, lähti toimimaan.

Vastaus

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

Tietoa sivustosta