Entwickler-Ecke
Basistechnologien - SortedList und Do While Schleife
gage - Mi 28.10.09 20:14
Titel: SortedList und Do While Schleife
Hallo
ich möchte eine SortedList mit einer Do While Schleife befüllen. ich möchte Kundendaten (Name, Nachname, Straße, Wohnort) einelsen und abspeichern. Danach wird der Benutzer gefragt ob er die Schleife noch mal wiederholen will. Mein problem ist das ich eine Variable int Count habe und diese dann hochzählen lassen möchte. bei einem Weiteren Durchlauf aber wieder bei 0 angefangen wírd. da ich Count = 0 gesetzt habe. also befindet der zähler sich beim zweiten Durchlauf auf 1 und 1 ist schon belegt. macht es sin die SortedList zu verwenden oder gibt es für eine Liste eine Bessere möglichkeit. Ich möchte danach auch fragen ob der Name schon in der Liste vorhanden ist und den bestimmten Name wieder ausgeben.
Gruß
Kha - Mi 28.10.09 20:39
:welcome:
Das verstehe ich noch nicht ganz. Du nimmst diese Count-Variable als Key der SortedList, also eine SortedList<int, *>? Dann sind die Einträge doch einfach nach Eingabereihenfolge geordnet, wo ist der Unterschied zu einer ganz normalen List<T>?
gage - Mi 28.10.09 21:00
Ja ich habe einen Key der bei mir Count heißt und ein paar verschiedene Strings. Ich weiß ja selbst das das nicht die Lösung sein kann. bei jedem Schleifen Durchlauf erhöhe ich dann Count. beim zweiten durchlauf habe ich ja dann ein Problem.
Kha - Mi 28.10.09 21:15
Na dann spricht ja nichts gegen eine ganz normale List<T>, Count brauchst du dann überhaupt nicht mehr.
gage - Mi 28.10.09 22:37
Kha hat folgendes geschrieben : |
| Na dann spricht ja nichts gegen eine ganz normale List<T>, Count brauchst du dann überhaupt nicht mehr. |
Ja ich habe es auch schon mal mit Arraylist versucht nur kann ich dann nicht auf bestimmte Elemte zugreifen. jetzt habe ich es auch mit List ausprobiert. aber ich bin noch nicht so zufrieden mit dem Code.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| string strasse; string name; string ort; string nachname;
static public void Read(ref List<string> meineliste) { Kunde Kundeneinlesen = new Kunde(); Console.WriteLine("Bitte geben Sie den Vorname ein"); Kundeneinlesen.name = Console.ReadLine(); Console.WriteLine("Bitte geben Sie den Nachname ein"); Kundeneinlesen.nachname = Console.ReadLine(); Console.WriteLine("Bitte geben Sie den Ort ein"); Kundeneinlesen.ort = Console.ReadLine(); Console.WriteLine("Bitte geben Sie die Straße ein"); Kundeneinlesen.strasse = Console.ReadLine(); meineliste.Add(Kundeneinlesen.name); meineliste.Add(Kundeneinlesen.nachname); meineliste.Add(Kundeneinlesen.ort); meineliste.Add(Kundeneinlesen.strasse); |
Hier fängt dann dann Main an:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| static void Main(string[] args) { List<string> meineListe = new List<string>(); bool j = true; do { Kunde.Read(ref meineListe); Console.WriteLine("Wollen Sie noch eine Kunden Anlegen? Bitte Ja (j) oder nein (n) eingeben?"); if (Console.ReadLine() != "j") { j = false; } } while (j);
Console.WriteLine(meineListe.IndexOf(Console.ReadLine())); foreach (string na in meineListe) { Console.WriteLine(na); } } |
Kha - Mi 28.10.09 23:37
Dass du die einzelnen Angaben in einer Klasse sammelst, ist lobenswert :D . Nur warum machst du diesen guten Eindruck wieder kaputt, indem du das Objekt sofort wieder auseinander nimmst und alles einzeln in die Liste wirfst ;) ? Nimm eine
List<Kunde>, dann fällt das Auslesen schon viel leichter.
Per
ref musst du Klasseninstanzen übrigens nicht übergeben (zumindest in diesem Fall), denn es wird sowieso nur eine Referenz darauf übergeben.
gage hat folgendes geschrieben : |
| Ja ich habe es auch schon mal mit Arraylist versucht nur kann ich dann nicht auf bestimmte Elemte zugreifen. |
Doch, nicht anders als bei List<T> ;) .
gage - Do 29.10.09 08:11
Kha hat folgendes geschrieben : |
Dass du die einzelnen Angaben in einer Klasse sammelst, ist lobenswert :D . Nur warum machst du diesen guten Eindruck wieder kaputt, indem du das Objekt sofort wieder auseinander nimmst und alles einzeln in die Liste wirfst ;) ? Nimm eine List<Kunde>, dann fällt das Auslesen schon viel leichter.
Per ref musst du Klasseninstanzen übrigens nicht übergeben (zumindest in diesem Fall), denn es wird sowieso nur eine Referenz darauf übergeben.
gage hat folgendes geschrieben : | | Ja ich habe es auch schon mal mit Arraylist versucht nur kann ich dann nicht auf bestimmte Elemte zugreifen. | Doch, nicht anders als bei List<T> ;) . |
ja soweit ist mir das klar das ich das so machen möchte nur leider kann ich es nicht umsetzten in C#. Ich weiß schon das ich gerade nur jeden string nacheinander einlese. ich muss dann nur noch
meineliste.Add(Kundeneinlesen.Kunden)sagen denke ich mal. aber das funktioniert noch nicht.
gage - Do 29.10.09 16:12
Ja jetzt habe ich das ganze mit Arraylist gelöst. jetzt möchte ich mit conatins und BinarySearch weitermachen. wie sieht die C# Syntax aus? habe schon bei msdn.microsoft.com nachgeshen. aber werde daraus nicht so ganz schlau. eigentlich wollte ich dann auch speziele daten wieder ausgeben. aber das geht ja nicht bei arraylist. oder?
!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!