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

Sokhaaris Messages postés 2 Date d'inscription samedi 20 avril 2019 Statut Membre Dernière intervention 21 avril 2019 - Modifié le 20 avril 2019 à 18:25
Sokhaaris Messages postés 2 Date d'inscription samedi 20 avril 2019 Statut Membre Dernière intervention 21 avril 2019 - 21 avril 2019 à 10:34
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 !

1 réponse

Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
20 avril 2019 à 18:30
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
0
Sokhaaris Messages postés 2 Date d'inscription samedi 20 avril 2019 Statut Membre Dernière intervention 21 avril 2019
21 avril 2019 à 10:34
D'accord très bien, je vais le lire et tenter de résoudre mon problème, merci !
0
Rejoignez-nous