Lire tx.tfile

manuweb_21 Messages postés 15 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 20 octobre 2006 - 18 oct. 2006 à 18:10
manuweb_21 Messages postés 15 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 20 octobre 2006 - 19 oct. 2006 à 13:48
J'ai réussi à importer un tableau de données depuis un textfile et a l'enregistrer dans des objets de différents types avec ce programme:

public class Personne
{public string nom;public string prenom;
public double poids;public double grandeur;}

StreamReader sr = new StreamReader("table.txt");

for(int i = 0; ;i++)
{
string stringInput = sr.ReadLine();

if(stringInput == null)
{
break;
}

string[] stringSplit = stringInput.Split(new char[] {'\t'});

Personne unepersonne = new Personne();
unepersonne.nom = stringSplit[0];
unepersonne.prenom = stringSplit[1];
unepersonne.poids = System.Convert.ToDouble(stringSplit[2]);
unepersonne.grandeur = System.Convert.ToDouble(stringSplit[3]);
}

Maintenant, je sais pas comment on peut aller chercher les info a l'intérieur de la classe, par exemple pour trouver la valeur "poids" qui appartient a la personne "paul"
un truc du style: double poids_de_paul = unepersonne.poids("paul","",,)

6 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 oct. 2006 à 18:55
Salut,
Faut mettre les variables de classe private et faire une property :
public double Poids { get { return this.poids; }}

Tu l'appelles comme ceci :
double poids = unePersonne.Poids;

<hr size="2" />-Blog-
0
manuweb_21 Messages postés 15 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 20 octobre 2006
19 oct. 2006 à 09:45
OK merci, mais comment je demande au programme de me donner la variable poids correspondant au nom "Paul", plutôt que de celui de Pierre ou Jacques?
Il faut bien que le nom:"Paul" apparaisse dans le code d'appel pour que le programme sache lequel nom je veux.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 oct. 2006 à 09:49
Dans ce cas là, tu peux faire par exemple une méthode qui prends le nom en argument et qui recherche dans toute les personnes celle qui a le prénom que tu veux, puis retourner son poids.

<hr size="2" />-Blog-
0
manuweb_21 Messages postés 15 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 20 octobre 2006
19 oct. 2006 à 11:44
Je crois que j'ai fait encore d'une autre maniere: j'ai enregistré mes données dans des arrays dont je récupère l'index pour pouvoir appeler l'information que je désire.
Mais c'est une solution assez "barbare". Ya-t'il pas moyen d'enregister l'indice du array directement dans la classe Personne (une sorte de de
Personne[]
si possible). Voici mon code (rouge = nouvelles lignes):



 public class Personne

    {

    public string nom;public string prenom;

    public double poids;public double grandeur;}

StreamReader sr = new StreamReader("table.txt");

string[] nom = new string[200];
string[] prenom = new string[200];
double[] poids = new double[200];
double[] grandeur = new double[200];

double poidsDunePeronne = 0;

for(int i = 0; ;i++)
    {
        string stringInput = sr.ReadLine();

        if(stringInput == null)
    {
        break;
    }

    string[] stringSplit = stringInput.Split(new char[] {'\t'});

    Personne unepersonne = new Personne();
    unepersonne.nom = stringSplit[0];
    unepersonne.prenom = stringSplit[1];
    unepersonne.poids = System.Convert.ToDouble(stringSplit[2]);
    unepersonne.grandeur = System.Convert.ToDouble(stringSplit[3]);

    nom[i] = unepersonne.nom;
    prenom[i] = unepersonne.prenom;
    grandeur[i] = unepersonne.grandeur;
    poids[i] = unepersonne.poids;
    }
    Console.WriteLine("nom=?");
    string lenom = Console.ReadLine();
    int index = Array.IndexOf(nom,lenom);
    poidsDunePeronne =(poids[index]);        
    Console.WriteLine(lenom + " pese " + poidsDunePeronne + "kg");
    Console.WriteLine(" press enter to end");
    Console.ReadLine();
    }
  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 oct. 2006 à 12:00
Tu peux faire une collection de personne (List) et faire un accesseur :

List personnes = new List();
personnes.Add(maPersonne);
personnes.Add(monAutrePersonne);
int poidsJean = personnes["Jean"].Poids;

Il faut s'assurer que y'a qu'une seule personne qu'il s'appelle Jean....

<hr size="2" />-Blog-
0
manuweb_21 Messages postés 15 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 20 octobre 2006
19 oct. 2006 à 13:48
Oui oui, c bon ya pas de répétitions de valeurs dans mon tableau (heureusement!)
Merci beaucoup pour les infos
0
Rejoignez-nous