Entwickler-Ecke
IO, XML und Registry - Matrix einlesen und Integer rausfilter
kamson - So 18.04.10 23:33
Titel: Matrix einlesen und Integer rausfilter
Hallo Leute,
ich bin grad dabei mir etwas c# anzueignen und steck grad nen bissl fest (:.
Es geht darum eine Datei einzulesen, die in Matrixform dargestellt ist. Die 1. Zeile und 1. Spalte sind Buchstaben alle übrigen Einträge sind Zahlen
Bsp:
X X X X
Y 6 -5 5
Y 2 -1 3
Y -1 0 2
Bis jetzt hab ich die erste Zeile erfolgreich eingelesen und in ein chararray geschrieben. Davon die Länge bestimmt und dann ein 2DIM Array für die Ints angelegt.
Das Problem ist jetzt, dass ich nicht weiß, wie ich bestimme, ob der nächste Char nen Int ist und die Sache mit den negativen Ints...
In java gabs vergleichsweise mit der Scannerklasse die Methode hasNextInt --> damit konnte man die Abfrage ganz gut machen.
Ich hatte folgenden Code schon zum laufen gebracht, aber da kamen nur komische Sachen bei der Textausgabe raus ( ganz andere Zahlen, viel mehr etc.)
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: 26: 27: 28: 29: 30:
| int i = 0; String cstring = ""; StreamReader reader = new StreamReader(@matlocation + ".mat"); reader.ReadLine(); int a = 0; int b = 0;
string test = ""; while (a <= chararray.Length - 1) { while (b <= chararray.Length - 1) { if ((reader.Peek()).GetType() == i.GetType()) { intmatrix[a,b] = reader.Read(); test = test + reader.Read();
b++; } else { reader.Read(); }
} b = 0; a++; } reader.Close(); |
Wär kewl, wenn mir jmd nen Lösungsvorschlag hätte.
Beste Grüße
kamson
Moderiert von
Kha: Code- durch C#-Tags ersetzt
Kha - Mo 19.04.10 00:25
:welcome:
Mit einem StreamReader machst du dir hier das Leben unnötig schwer. Lies die Datei über File.ReadAllLines in ein String-Array ein, davon teilst du die einzelnen String-Zeilen per String.Split() wiederum in String-Arrays der einzelnen Elemente auf, die du schließlich mit int.TryParse auf Int/Nicht-Int überprüfen kannst. Aber wenn der Aufbau der Datei sowieso so regelmäßig ist, weißt du ja eigentlich an jeder Stelle, ob danach ein Int kommen sollte oder nicht.
kamson - Mo 19.04.10 11:34
Hey,
danke für deine Antwort, ich wusste ich hatte das int.TryParse schon gesehen konnte mich nur net mehr dran erinnern. In den meisten Fällen ist die Datei so regelmäßig, einzig die Leerzeichen variieren, sollte aber kein Problem sein.
Vielen Danke erstmal (:
Kha - Mo 19.04.10 11:51
kamson hat folgendes geschrieben : |
In den meisten Fällen ist die Datei so regelmäßig, einzig die Leerzeichen variieren, sollte aber kein Problem sein. |
Dann benutze
line.Split(null, StringSplitOptions.RemoveEmptyEntries) :) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!