Guruille

Yritän tehdä henkilörekisteriä HashMappina. Tämä toimii mutta ei vastaa tavoitteitani. Pitäisi olla oma metodi jolla esim vaihdetaan nimi avioon mennessä. Pitäisikö HashMapin olla oma luokkansa?
Entä Switch valinta tässä näiden toimintojen edessä?


class Sairaankuljettaja
{
private String psNimi;
private String psHenkilotunnus;
private String psValmistumisvuosi;

public Sairaankuljettaja(String sNimi, String sHenkilotunnus, String sValmistumisvuosi)
{
psNimi=sNimi;
psHenkilotunnus=sHenkilotunnus;
psValmistumisvuosi=sValmistumisvuosi;
}
public String toString()
{
return psNimi " " psHenkilotunnus " " psValmistumisvuosi;
}
}


import java.util.*;

class Rekisteri
{
String shenkiloNro;
Sairaankuljettaja uusiSairKu;
static HashMap rekisteri = new HashMap();

public static void main(String args[])
{
do
{
System.out.println("Anna Henkilönumero: ");
String shenkiloNro= Lue.rivi();
if (shenkiloNro.length() == 0)
break;

System.out.println("Anna uuden sairaankuljettajan nimi: ");
String sNimi = Lue.rivi();
System.out.println("Anna uuden sairaankuljettajan henkilötunnus: ");
String sHenkilotunnus = Lue.rivi();
System.out.println("Anna uuden sairaankuljettajan valmistumisvuosi: ");
String sValmistumisvuosi= Lue.rivi();

Sairaankuljettaja uusiSairKu = new Sairaankuljettaja(sNimi, sHenkilotunnus, sValmistumisvuosi);

rekisteri.put(shenkiloNro, uusiSairKu);
} while(true);

System.out.println(rekisteri);
System.out.println();


System.out.println("Anna Henkilönumero niin tulostan tiedot: ");
String hloNro= Lue.rivi();

System.out.println(Rekisteri.rekisteri.get("0001"));

System.out.println();

Iterator iter = ((Set)rekisteri.entrySet()).iterator();

while (iter.hasNext())
{
Map.Entry alkio = (Map.Entry)iter.next();
String avain = (String)alkio.getKey();
Sairaankuljettaja arvo=(Sairaankuljettaja)alkio.getValue();
System.out.println("Avain on " avain " ja arvo on " arvo);
}

}
}
4499
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Itse loisin ainakin ehkä seuraavat luokat: Nimi, Henkilö ja Hetu, HenkilöRekisteri, KäyttöLiittymä ja PääOhjelma. Käytä toki Java:n uusi ominaisuuksia hyväksi eli luo se HashMap niin että siihen tulee tyyppi tarkastus mukaan eli:

HashMap kuskit = new HashMap();

Eikös HashSet olisi parempi valinta vai onko jokin tietty syy tuon HashMap:n käyttöön? Jos et tiedä kovin hyvin hash:n toiminta periaatetta niin silloin kannattaa käyttää sitä String luokaa edelleen Hetu luokan sijaan. Mistä muuten löydän tuon "Lue" paketin, vai onko sellaista edes olemassa? (olen vain huomannut että jonkun muunkin koodissa on esiintynyt tuollainen luku rivi).

Mitä jos liittäisit sen hetun henkilön tietoihin mukaan. Ja tekisi vaikka seuraavan kaltaisen rekisteri luokan:

public class HenkilöRekisteri extends HashMap {

   public HenkilöRekisteri() {
      super();
   }

   public Henkilö get(Henkilö henkilö) {
      return get(henkilö.annaHetu());
   }

   public Henkilö get(String hetu) {
      return get(new Hetu(hetu));
   }

   public Henkilö put(Henkilö henkilö) {
      return put(henkilö.annaHetu(), henkilö);      
   }   
}

Äänestä
  • Lue on Arto Wiklan laatima luokka, joka on yleisessä käytössä useissa oppilaitoksissa. Löytyy varmaan googlella.

    Äänestä

  • SivullinenX kirjoitti:

    Lue on Arto Wiklan laatima luokka, joka on yleisessä käytössä useissa oppilaitoksissa. Löytyy varmaan googlella.

    Kiitos, pitää etsiä. Sitä vähän ajattelinkin että olisi jossain kouluissa käytössa.

    Äänestä

  • Minulla on koneella Lue-luokka ja Kirjoita luokka, muuta en tiedä onko lupa laittaa niitä nettiin. Ne voi imuroida yliopistojen tietojenkäsittelytieteen laitosten kotisivuilta.

    Äänestä

Kommentoi aloitusta


ItseOp kirjoitti:

Yritän tehdä henkilörekisteriä HashMappina. Tämä toimii mutta ei vastaa tavoitteitani. Pitäisi olla oma metodi jolla esim vaihdetaan nimi avioon mennessä. Pitäisikö HashMapin olla oma luokkansa?
Entä Switch valinta tässä näiden toimintojen edessä?


class Sairaankuljettaja
{
private String psNimi;
private String psHenkilotunnus;
private String psValmistumisvuosi;

public Sairaankuljettaja(String sNimi, String sHenkilotunnus, String sValmistumisvuosi)
{
psNimi=sNimi;
psHenkilotunnus=sHenkilotunnus;
psValmistumisvuosi=sValmistumisvuosi;
}
public String toString()
{
return psNimi " " psHenkilotunnus " " psValmistumisvuosi;
}
}


import java.util.*;

class Rekisteri
{
String shenkiloNro;
Sairaankuljettaja uusiSairKu;
static HashMap rekisteri = new HashMap();

public static void main(String args[])
{
do
{
System.out.println("Anna Henkilönumero: ");
String shenkiloNro= Lue.rivi();
if (shenkiloNro.length() == 0)
break;

System.out.println("Anna uuden sairaankuljettajan nimi: ");
String sNimi = Lue.rivi();
System.out.println("Anna uuden sairaankuljettajan henkilötunnus: ");
String sHenkilotunnus = Lue.rivi();
System.out.println("Anna uuden sairaankuljettajan valmistumisvuosi: ");
String sValmistumisvuosi= Lue.rivi();

Sairaankuljettaja uusiSairKu = new Sairaankuljettaja(sNimi, sHenkilotunnus, sValmistumisvuosi);

rekisteri.put(shenkiloNro, uusiSairKu);
} while(true);

System.out.println(rekisteri);
System.out.println();


System.out.println("Anna Henkilönumero niin tulostan tiedot: ");
String hloNro= Lue.rivi();

System.out.println(Rekisteri.rekisteri.get("0001"));

System.out.println();

Iterator iter = ((Set)rekisteri.entrySet()).iterator();

while (iter.hasNext())
{
Map.Entry alkio = (Map.Entry)iter.next();
String avain = (String)alkio.getKey();
Sairaankuljettaja arvo=(Sairaankuljettaja)alkio.getValue();
System.out.println("Avain on " avain " ja arvo on " arvo);
}

}
}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu