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

  • modder

    aktív tag

    válasz Gyeptegla #4681 üzenetére

    egyszerűbbé teheted az életed, ha csinálsz egy típust a számoknak
    class Szam {
    String eloado;
    String cim;
    int hossz; //masodperc

    public Szam(String eloado, String cim, int hossz) {
    // ertekadas a tagvaltozoknak
    }
    }

    Felteszem, hogy sikerült beolvasnod a sorokat. Biztonság kedvéért http://stackoverflow.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java Ha el akarod őket menteni a memóriában, akkor pl. (pszeudokód)

    List<Szam> szamok = new ArrayList<Szam>();

    while ((line = br.readLine()) != null) {
    Szam aktualisSzam = parse(sor);
    szamok.add(aktualisSzam);
    }

    De elárulom neked, hogy ez egyik feladathoz sem kell.
    B)
    Szam elozoSzam = br.readLine(); // elso sor
    while ((line = br.readLine()) != null) { // tobbi sor
    Szam aktualisSzam = parse(sor);
    if ( elozoSzam.hossz < aktualisSzam.hossz ) {
    // nem igaz
    }
    elozoSzam = aktualisSzam;
    }

    C) hasonlóan, de egy int-ben összegzed a számok hosszát (ha a sorok végére értél, elölről kezded, tehát két ciklust kell egymásba ágyaznod). A ciklusból kilépési feltétel az, a osszHossz >= K. Akkor az abban a ciklusban beolvasott szám lesz a keresett.

    D) Itt már kell egy Map
    Map<String,Szam> perCim = new HashMap<String,Szam>();

    Végigmész a sorokon, és megnézed, hogy az aktuális szám címével van-e szám a mapban. perCim.get(cim) != null. Ha nincs, beteszed.
    Ha van, akkor megnézed, hogy az aktuális hosszabb-e, mint a bentlévő, és a feltételnek megfelelően cseréled.

    Ja, és köszönet, nagyobb nyelvtani hibák nélkül, tagolással, és az írásjelek megfelelő használatával tetted fel a kérdést. Ritkaságszámban megy az ilyen :D

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