J'essaie d'obtenir une ligne d'entiers à partir d'un fichier texte et de les analyser en variables séparées. Le fichier texte est configuré comme ceci:Lecture et analyse d'entiers à partir d'un fichier texte
ID: HP: MP: STR: SIO: SPD: GOLD: XP
0: 100: 50: 10: 5: 12: 5: 10
Je veux les séparer avec: le symbole entre chaque. L'un des problèmes que j'ai avec cela est de pouvoir lire le fichier ligne par ligne en tant que chaînes, en les analysant, puis en stockant les chaînes analysées en tant qu'ints. Voici le code que je tente d'utiliser jusqu'à présent:
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;
}
}
Je reçois l'erreur suivante lorsque ce code fonctionne:
chaîne d'entrée était pas dans un format correct. Il fait référence à cette partie du code:
if (j == 0) id = int.Parse(s);
Wow, je viens de réaliser que j'avais la « clé » en haut du fichier texte avec l'ID: HP: MP ... a tout chambouler lol. Complètement oublié qu'il était là-haut. Merci pour tous les conseils sur le nettoyage du code tout le monde! Premier utilisateur ici, je reviendrai quand j'aurai d'autres questions! –
Oh mec, j'ai réfléchi en demandant si cette ligne d'en-tête était dans le fichier mais j'ai pensé: "Naaah ... ne peut pas être ça!" :) –