Le format de la chaîne d'entrée est incorrect.

Messages postés
2
Date d'inscription
samedi 20 avril 2019
Statut
Membre
Dernière intervention
21 avril 2019
-
Bonjour,

J'ai un problème que j'essaye de résoudre depuis ce matin mais en vain.
J'ai un fichier texte d'une liste de fleurs avec ses caractéristiques (longueur pétale, largeur pétale ect.) comme suit par exemple :

5.0,3.5,1.3,0.3,Iris-setosa
4.5,2.3,1.3,0.3,Iris-setosa

J'ai réussi à lire le fichier et à afficher son contenu.
Je souhaite ensuite stocker les 4 premières valeurs de chaque ligne afin de pouvoir m'en servir plus tard.
Cependant, Visual Studio me dit que le format de chaine d'entree est incorrect.

J'ai crée une classe Fleur avec ses attributs :

class Fleur
{
double longueur_sepal;
double largeur_sepal;
double longueur_petal;
double largeur_petal;
string label;


J'ai réalisé des propriétés get pour chaque attribut, cependant mon constructeur est vide puisqu'il est inutile de créer une instance Fleur car toutes les valeurs dont j'ai besoin sont dans mon fichier txt.

Voici le code dans le main :

StreamReader reader = new StreamReader("iris.data");
string ligne = reader.ReadLine(); ;
List<Fleur> liste_fl = new List<Fleur>();
while(ligne != null)
{
Console.WriteLine(ligne);
string[] sousTab = ligne.Split(','); // On récupère les 5 éléments dans un tableau
Fleur fl = new Fleur();
fl.Longueur_sepal = double.Parse(sousTab[0]);
fl.Largeur_sepal = double.Parse(sousTab[1]);
fl.Longueur_petal = double.Parse(sousTab[2]);
fl.Largeur_petal = double.Parse(sousTab[3]);
fl.Label = sousTab[4];
liste_fl.Add(fl);
ligne = reader.ReadLine(); // On passe à la ligne suivante

}
ligne = reader.ReadLine(); // On passe à la ligne suivante


Console.ReadKey();

Ici mon fichier est iris.data cependant il s'ouvre avec le bloc note donc je considère cela comme si c'était un txt.
L'erreur apparait lorsque le programme tente d'effectuer les double.Parse.

Je ne comprends pas l'erreur car mes attributs sont de type double. :(

Merci d'avance pour votre aide !
Afficher la suite 

1 réponse

Messages postés
13621
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 août 2019
295
0
Merci
Bonjour
Pour tes prochaines questions, merci de lire et d’appliquer ce qui est décrit ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ton problème vient, très très certainement, du fait que le symbole décimal de ton ordinateur est la virgule, donc pour ton programme un texte qui représente un double doit contenir une virgule et non un point.
Voici un petit tuto que j’ai écrit sur le sujet, dans lequel tu trouveras plusieurs façons de gérer cette conversion
https://codes-sources.commentcamarche.net/faq/11316-conversion-de-string-en-nombre-en-net-c-et-vb-net
Sokhaaris
Messages postés
2
Date d'inscription
samedi 20 avril 2019
Statut
Membre
Dernière intervention
21 avril 2019
-
D'accord très bien, je vais le lire et tenter de résoudre mon problème, merci !
Commenter la réponse de Whismeril