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

  • Karma

    félisten

    válasz Dinter #6677 üzenetére

    Húha. A belinkelt kódodban egyetlen Dolgozo példányt hozol létre, amit valamiért "dolgozok" nevű változóba raksz, és ennek tragikus következményei vannak a folytatásra nézve. Ha debuggerrel megnéznéd a listádat, akkor azt látnád, hogy bár annyi eleme van a listának, mint ahány sorod volt a szövegfájlban, mindegyik elem ugyanaz (a legutolsó rekord a fájlban).

    Minden sorhoz új Dolgozo példányra van szükséged, lásd itt:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;

    namespace dolgozok
    {
    struct Dolgozo
    {
    public int id;
    public string nev;
    public string pw;
    public bool vezeto;
    }
    class Program
    {
    static void Main(string[] args)
    {
    List<Dolgozo> lista = new List<Dolgozo>();
    string line;

    using (StreamReader sr = new StreamReader("dolgozok.txt"))
    {
    while ((line=sr.ReadLine())!=null)
    {
    var sor = line.Split(':');
    Dolgozo dolgozo = new Dolgozo();
    dolgozo.id = Convert.ToInt32(sor[0]);
    dolgozo.nev = sor[1];
    dolgozo.pw = sor[2];
    dolgozo.vezeto = Convert.ToInt32(sor[3]) == 0;
    lista.Add(dolgozo);
    }
    }

    Console.ReadKey();
    }

    }
    }

    A nevezéktanba és a kisbetű-nagybetű dolgokba nem akartam belenyúlni, de lenne mit javítani azon a fronton. És egyébként az elején létrehozott string[4]-re sincs semmi szükség, mert a Split mindig újat hoz létre.

    ---

    Az ide másolt kódban el tudnád mondani, mégis milyen indíttatásból csináltál hatos ciklusokat; és miért kéred be ennyiszer a nevet és a jelszót? A sorrend kicsit rossz, de ha a fejedben helyrerakod a lépések sorozatát, szerintem gyorsan rájössz a megoldásra. For ciklus nem lesz benne, és indexekkel se kell játszadoznod – a kérdés ugyanis az, hogy "van-e olyan Dolgozo a lista-ban, akinek a neve és a jelszava egyezik a megadott értékekkel?".

    Athlon64+: Én úgy látom, az OP kérdés minden része le lett fedve.
    De majd szól, ha valami kimaradt.

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