Ich versuche, eine ganze Zahlenzeile aus einer Textdatei zu erhalten und sie in separate Variablen zu zerlegen. Die Textdatei ist wie folgt aufgebaut:Integer aus einer Textdatei lesen und analysieren
ID: HP: MP: STR: WIS: SPD: GOLD: XP
0: 100: 50: 10: 5: 12: 5: 10
Ich möchte sie mit dem: -Symbol dazwischen teilen. Eines der Probleme, die ich dabei habe, ist, die Datei Zeile für Zeile als Zeichenfolgen lesen zu können, sie zu analysieren und dann die analysierten Zeichenfolgen als Eingaben zu speichern. Hier ist der Code, den ich versuche, so weit zu verwenden:
class monster
{
string line;
string[] mstats;
string[] mname;
char[] delimeterChars = {':'};
int id;
int i = -1;
int j = 0;
int hp;
int mp;
int str;
int wis;
int spd;
int gold;
int xp;
public monster(int id)
{
StreamReader stats = new StreamReader("monsterStats.txt");
while(i != id)
{
i++;
line = stats.ReadLine();
mstats = line.Split(delimeterChars);
j = 0;
foreach(string s in mstats)
{
if (j == 0) id = int.Parse(s);
else if (j == 1) hp = int.Parse(s);
else if (j == 2) mp = int.Parse(s);
else if (j == 3) str = int.Parse(s);
else if (j == 4) wis = int.Parse(s);
else if (j == 5) spd = int.Parse(s);
else if (j == 6) gold = int.Parse(s);
else if (j == 7) xp = int.Parse(s);
j++;
}
}
curHp = hp;
curMp = mp;
curSpd = spd;
curStr = str;
curWis = wis;
}
}
ich folgende Fehlermeldung erhalten, wenn dieser Code ausgeführt wird:
Eingabezeichenfolge war nicht in einem korrekten Format. Es verweist auf diesen Teil des Codes:
if (j == 0) id = int.Parse(s);
Wow, ich erkennen, dass das "Schlüssel" I am oberen Ende der Textdatei mit der ID hatte: HP: MP ... lol alles wurde, durcheinander. Völlig vergessen, dass es da oben war. Danke für alle Ratschläge zum Aufräumen des Codes! Erstanwender hier, ich werde sicher wiederkommen, wenn ich noch mehr Fragen habe! –
Oh man, ich überlegte, ob ich fragen sollte, ob diese Kopfzeile in der Datei war, aber dachte: "Naaah ... kann das nicht sein!" :) –