<< Vissza

Hibakeresés

Osztályok 1. (alapok)

Feladat: Keresd meg az alábbi kódban azokat a sorokat, amelyek hibásak és kattints rájuk. Indokold meg, hogy szerinted miért hibás. Amennyiben úgy érzed, hogy az összes hiba megvan, kattins a "Kész vagyok" gombra!

Milyen hibákra kell gondolni? Szintaktikai és szemantikai hibák is lehetnek a kódban: nem megfelelő szintaxis az egyes nyelvi konstrukciókban, módosítók sorrendje, visszatérési típusokkal kapcsolatos, nullával való osztás, tömb alul- vagy túlindexelés, adott scope-ban már/még nem látható változók, stb.

public class MestersegesEgitest extends Object { 

    private int fellovesEve;

    private String nemzetiseg;

    static private final String[] HELYES_NEMZETISEGEK = { "kinai", "orosz", "amerikai", "magyar" }; 

    private final boolean static helyesNemzetiseg(String nemzetiseg) { 

        for (String n : HELYES_NEMZETISEGEK) {

            if (n.equals(nemzetiseg)) {

                return true;

            }

        }

        return false;

    }

    public MestersegesEgitest() {

        fellovesEve = 2000;

        nemzetiseg = "kinai";

    }

    public MestersegesEgitest(int p, String sz) {

        if (p < 1960 || p > 2019) {

            this.fellovesEve = 1980; 

        } else {

            fellovesEve = p;

        }

        if (helyesNemzetiseg(sz)) {

            this.nemzetiseg = sz;

        } else {

            this.nemzetiseg = "orosz";

        }

    }

    public void setFellovesEve(int p) {

        if (p > 1960 & p < 2020) { 

            fellovesEve = p;

        } else {

            fellovesEve = 1980;

        }

    }

    public int getFellovesEve() {

        return fellovesEve;

    }

    public void setNemzetiseg(String sz) {

        if (helyesNemzetiseg(sz)) {

            nemzetiseg = sz; 

        } else {

            nemzetiseg = "orosz";

        }

    }

    public String getNemzetiseg() {

        return nemzetiseg;

    }

    public String toString() {

        return "A fellövés éve: " . fellovesEve . " és ennek nemzetisége: " . nemzetiseg; 

    }

    public int miotaVanFent() {

        return 2019 - fellovesEve;

    }

}

Több helyes megoldás is létezhet, amit sajnos nem lehet felvinni a programba, ezért az általunk megadott példamegoldás nem szentírás. Előfordulhat, hogy mi a hiba helyét jelöltük be hibásnak, míg te azt a helyet, ahol a hibás sor miatt probléma lép fel. Amennyiben meg bírod indokolni, hogy miért véled hibásnak az adott sort vizsgán, valószínűleg azt is el fogják fogadni (ha valóban hiba és visszavezethető az indoklásodra).