Keresés

Új hozzászólás Aktív témák

  • BaLinux

    tag

    válasz BaLinux #221 üzenetére

    Megjegyzéseim:

    mod: amikor elkezdődik a dőlt szöveg, ott volt egy [ i ]. Lesz több is, de semmi kedvem kijavítani mindenhol :)

    - a Kartya.PIN-t inicializáld a véletlen számmal.

    - a Penzintezet.befizet(int osszeg, Szamla szamla) metódusban a szamla.egyenleg+=osszeg; ronda. Elvileg eléred, ha nem private, de akkor is szebb egy szamla.addEgyenleg(osszeg);. Későbbi hülyeségektől menthet meg.

    - itt hasonlóan:
    public int kivesz(int osszeg, Szamla szamla) {
    int kivet;
    if (szamla.egyenleg<osszeg) {
    kivet=szamla.egyenleg;
    szamla.egyenleg=0;
    return kivet;
    }
    szamla.egyenleg-=kivet;
    return kivet;
    }
    (ez kicsit rövidebben is írható, de ez most mind1)

    - Itt kezdődnek a problémáid (NullPointerException démon képében):
    public void befizet(int osszeg, int szamlaID, String nev) {
    for (int i=0; i<=MAX_UGYFEL_SZAM; i++) {
    // oops, mért MAX_UGYFEL_SZAM-ig? a tömb tele lehet null-okkal. ráadásul túlindexeled a tömböt eggyel!
    if (szamlak.getSzamlaID()==szamlaID) {
    if (szamlak
    .getTulajdonos()==nev) {
    szamla.egyenleg+=osszeg;
    }
    }
    }
    }
    helyesen:
    public void befizet(int osszeg, int szamlaID, String nev) {
    for (int i=0; i<ugyfelekSzama; i++) {
    // ugyfelekSzama használandó, ha már van, és tudod hogy addig nem null a tömb.
    // esetlegesen egy if (szamlak
    !=null) is betehető ide, ha össze-vissza lennének, ami nem igaz.
    if (szamlak.getSzamlaID()==szamlaID) {
    // használhatnál && operátort, nem muszáj külön ifeket.
    if (szamlak
    .getTulajdonos()==nev) {
    // itt sejted mit kommentálnék ismét :)
    szamla.egyenleg+=osszeg;
    }
    }
    }
    }
    a kivesz(...) metódusra hasonlóan.

    - a szamlaletrehoz(...)-ban ugye illene egy allokáció, vagy kapsz egy gigantikus NullPointerExceptiont a fejedbe, mint véres fejdísz. :)
    így: new Szamla(...), aztán azon operálva, majd beletéve a tömbbe. Megint, nem írunk át más osztálybeli adattagokat, ha aranyosak vagyunk.

    - Takarekpenztar.szamlaletrehoz(...): felüldefiniálást nem úgy kell feltétlenül érteni, hogy copy-paste-1-sor-módosít. :) Meg lehet hívni a felüldefiniált metódust.
    pl: {
    if (egyenleg==0) return null;
    return super.szamlaletrehoz(egyenleg, nev);
    }
    Amúgy ez a struktúra amit a feladatban kijelölnek, kicsit rossz lenne komoly alkalmazásnál, dehát csak egy feladat.

    - public Terminal(String bank) {
    // NullPointerException: bankmezo==null
    bankmezo.terminalokSzama++;
    // intezetNeve: undefined symbol
    intezetNeve=bank;
    }

    - Terminal.kivesz hiány :)

    Ja, ha jól értem itt befejezted. További sok sikert!
    Annyival kommentálnám még az egészet, hogy egy valós alkalmazásban megfelelő adatstruktúrákat alkalmaznék (ami itt ellentmond a feladattal, mert tömböket kell használni), ami nem lineáris keresést tud (Hash, Tree). Tudom, tudom, ez a feladat, bocs hogy beszólok.

    [Szerkesztve]

Új hozzászólás Aktív témák