Autor |
Beitrag |
dubstep
      
Beiträge: 72
Win XP, Win 7
C# (VS 2010)
|
Verfasst: Mi 27.04.11 16:39
Ich habe schon beinahe alle Kombinationen durch, aber leider finde ich den Fehler nicht.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| Dictionary<int,int[]> Adjazenzliste = new Dictionary<int, int[]>(); Adjazenzliste.Add(001, new int[]{015, 030}); foreach(int[] aa in Adjazenzliste.Values) { textBox4.AppendText(Convert.ToString(aa)); } |
Ausgabe: System.Int32[]
Nimmt man kein Array oder List<T> als Value beim Dictionary, so funktioniert das Auslesen ohne Probleme ... leider wird aber eine solche Datenstruktur benötigt.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Dictionary<int,int> Adjazenzliste = new Dictionary<int, int>(); Adjazenzliste.Add(001, 030);
foreach(int aa in Adjazenzliste.Values) { textBox4.AppendText(Convert.ToString(aa)); } |
Ausgabe: 30
Vielen Dank für eure Hilfe!
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Mi 27.04.11 16:56
Ein Integer-Array kannst du nicht einfach in einen String umwandeln aber du kannst ja auch das Array durchlaufen und die einzelnen Werte verwenden.
C#-Quelltext 1: 2: 3: 4: 5:
| foreach(int[] aa in Adjazenzliste.Values) foreach(int value in aa) { textBox4.AppendText(value.ToString()); } |
|
|
dubstep 
      
Beiträge: 72
Win XP, Win 7
C# (VS 2010)
|
Verfasst: Mi 27.04.11 21:25
Danke!
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Dictionary<int,int[]> Adjazenzliste = new Dictionary<int, int[]>(); Adjazenzliste.Add(001, new int[] {000, 010, 020, 030});
foreach(int[] aa in Adjazenzliste.Values) { for (int i = 0; i < 4; i++) { textBox4.AppendText((Convert.ToString(aa[i])) + "\n"); } } |
Gibt es eine Möglichkeit, die 000 nicht als 0 darzustellen, sondern mit den ganzen drei Ziffern (also Darstellung als 000)?
|
|
Dr. Hallo
      
Beiträge: 110
Erhaltene Danke: 13
XP
C/C++/C#
|
Verfasst: Mi 27.04.11 23:52
so vielleicht?
aa[i].ToString("000")
|
|
dubstep 
      
Beiträge: 72
Win XP, Win 7
C# (VS 2010)
|
Verfasst: Do 28.04.11 00:36
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Adjazenzliste.Add(Convert.ToInt32(textBoxGhost.Text.Substring(0, 3)), new int[] { 100, 101}); Adjazenzliste.Add(Convert.ToInt32(textBoxGhost.Text.Substring(3, 3)), new int[] { 100, 101, 201, 301});
foreach(int[] aa in Adjazenzliste.Values) { for (int i = 0; i < 4; i++) { textBox4.AppendText((Convert.ToString(aa[i])) + "\n"); } } |
Durch das Durchlaufen des Arrays mit dieser zusätzlichen for-Schleife benötige ich den Index "i", welcher die Größe des jeweiligen Arrays verlangt. Genau dieser Index bereitet mir nun Kopfzerbrechnen, da ich Arrays unterschiedlicher Länge (siehe oben - z.B. einmal ein Array mit Länge 2 und ein Array mit Länge 4) habe. Die Funktion ".Length" darf hier leider nicht zur Anwendung kommen. Im Prinzip soll der Index i genau so viele Zähler haben, wie das Array (man hat ja mehrere Arrays mit unterschiedlicher Länge) lange ist.
Bin für jeden Vorschlag dankbar ...!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 28.04.11 07:58
Ohne die Länge des Arrays abzufragen kannst du nicht alle Indizes durchgehen, weil du ganz einfach nicht weißt was "alle" sind.
Was hast du denn gegen die vorgeschlagene Lösung mit einer weiteren for..in Schleife?
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Do 28.04.11 08:00
Dafür hast du nur 2 Möglichkeiten die hier beide schon genannt wurden.
Eine hast du selbst genannt "Length" und die andere hast du in meinem Beispiel gesehen "foreach".
|
|
Dr. Hallo
      
Beiträge: 110
Erhaltene Danke: 13
XP
C/C++/C#
|
Verfasst: Do 28.04.11 13:24
wenn du auf dein i nicht verzichten darfst, kannst du den indexfehler mit try catch abfangen und mit break die innere schleife verlassen. was aber eher die rabiate methode ist.
|
|
dubstep 
      
Beiträge: 72
Win XP, Win 7
C# (VS 2010)
|
Verfasst: Fr 29.04.11 01:53
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 29.04.11 05:58
|
|