TD 11 TestIMC (ex3)

Voir le sujet précédent Voir le sujet suivant Aller en bas

TD 11 TestIMC (ex3)

Message  trikman le Mer 09 Déc 2009, 22:58

bonjour,

je ne comprends pas cet exercice :
1. Dans votre premier programme, vous ajoutez maintenant une methode de classe
lirePersonnes qui renvoie un tableau de personnes. Ces personnes sont lues sur
l'entrée standard (nom, taille, poids), comme au premier exercice.

je cree ma classe dans mon premier programme mais arriver au for je ne comprend pas ce que je dois faire,
comment dois-je faire pour initialiser chaque personne dans chaque entrée du tableau ?

voila mon code (classe TestIMC) :



Code:
package imc;
import java.util.Scanner;

public class TestIMC {

   
    public static void main(String[] args) {
       
        Scanner clavier = new Scanner(System.in);
        System.out.println("entrez le nom de la personne");
        String nom;
        nom = clavier.nextLine();
        System.out.println("entrez la taille");
        double taille;
        taille = clavier.nextDouble();
        System.out.println("entrez le poids");
        double poids;
        poids = clavier.nextDouble();

        System.out.println(nom + " fait " + taille + "m pour un poids de " + poids + "kg" );
    }
    public static Personne[] lirePersonnes(int nbrePers){
       
        Personne[] persTabl = new Personne[nbrePers];
       
        for(int i=0; i==persTabl[].length; i++){         
        }
    }       
}

et ma classe Personne :


Code:

package imc;

import java.lang.Object.*;

public class Personne {

    private String nom;
    private double taille;
    private double poids;


    public Personne(String nom1, double taille1, double poids1){

        System.out.println("creation d'une personne");
        nom = nom1;
        taille = taille1;
        poids = poids1;
    }

    public String getNom(){
        return nom;
    }
    public double getTaille(){
        return taille;
    }
    public double getPoids(){
        return poids;
    }


    public String toString(){

        String phr = this.nom + " fait " + this.taille + "m pour un poids de " + this.poids +"kg";
        return phr;
    }
   
    public static double calculIMC(double taille2, double poids2){
       
        double resultIMC;
       
        resultIMC = poids2 / (taille2 * taille2);
       
        return resultIMC;
    }
   
    public static double maxIMC(Personne pers1, Personne pers2){
       
        double maxIMC = 0;
       
        if((pers1.poids / (pers1.taille*pers1.taille) > (pers2.poids / (pers2.taille*pers2.taille)))){
            maxIMC = pers1.poids / (pers1.taille*pers1.taille);
            return maxIMC;
                   
        } else {
            maxIMC = pers2.poids / (pers2.taille*pers2.taille);
            return maxIMC;
           
        }     
    }
   
    public static double maxIMCtab(Personne[] persTab){
       
        double maxIMC = 0;
        int i = 0;
        for(i=0; i==persTab.length; i++){
            maxIMC = persTab[i].poids / (persTab[i].taille*persTab[i].taille);
            if (maxIMC > ((persTab[i-1].poids) / (persTab[i-1].taille*persTab[i-1].taille))){
                maxIMC = i-1;
            } else {
                maxIMC = i;
            }
        }
        return maxIMC;
    }
}

et j'en profite pour demander ,si un prof regarde et qu il connait le td11, jeter un oeil a l ensemble et me dire si c est +- correct Embarassed Laughing

merci
Martin
Very Happy

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

RE

Message  trikman le Mer 09 Déc 2009, 23:35

faut-il que je rajoute aussi des setters dans ma classe Personne pour les utiliser dans ma classe TestIMC ?

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  DjMan42 le Mer 09 Déc 2009, 23:42

Pour initialiser tes Personnes creer des objet comme ceci.
Code:

public static ArrayList<Personne> lirePersonne (){

      Scanner clavier = new Scanner(System.in);
      ArrayList<Personne> listPersonne;
      listPersonne = new ArrayList<Personne> ();

      String nom;
      double taille;
      double poids;
      Personne per;
      int cpt = 0;
      char cr;
      boolean ok = true;

      //System.out.println("Veuillez entrer le nom de la Personne n° 1");
      while(ok){
         cpt = cpt + 1;
         System.out.println("Veuillez entrer le nom de la Personne n° "+cpt);
         nom = clavier.next();
         System.out.println("Veuillez entrer la taille de la Personne ");
         taille = clavier.nextDouble ();
         System.out.println("Veuillez entrer le poids de la Personne ");
         poids = clavier.nextDouble();
         listPersonne.add(new Personne(nom, taille, poids));

         System.out.println("Voulez-vous continuer ? o/n" );
         cr = clavier.next().charAt(0);
         if (cr == 'n'){
             ok = false;
            }else{
               if(cr != 'o')
                  throw new IllegalArgumentException("erreur");
            }

DjMan42

Nombre de messages : 219
Prénom : Eden
Statut : Etudiant 1er Indu
Localisation : Bruxelles
Date d'inscription : 28/10/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Dj x-fuse le Jeu 10 Déc 2009, 13:20

Merci de rajouter le tag [Java] ou [LaJ1]. Smile

Et pour parfaire l'exemple de DjMan42 :
ceci devient cela Smile

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

RE

Message  trikman le Jeu 10 Déc 2009, 17:33

merci djman42 , mais je ne comprend pas une partie de ton code

que fait l'instruction charAt? elle utilise la variable cr (char) , a quoi sert cette variable?

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Legenyes le Jeu 10 Déc 2009, 17:48

Comme le dis très bien la doc (que tu aurais du aller lire avant de poser ta question)
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#charAt(int)

charAt(index) retourne le caractère se trouvant à la position 'index' dans le string.

Dans ce cas ci, on récupère se qui est tapé au clavier, et on en prend le premier (index=0) caractère.
pour tester si égal a o (oui) ou n (non)

Legenyes

Nombre de messages : 626
Age : 31
Prénom : Sébastien
Statut : Ancien : Promo 2008-2009
Localisation : Braine-l'Alleud
Date d'inscription : 16/10/2007

Revenir en haut Aller en bas

RE

Message  trikman le Jeu 10 Déc 2009, 17:50

djman42 je me trompe ou dans ton code il manquait une boucle while(ou for) ? dj x-fuse la rajouté j pense que c mieux si je veux creer plusieurs personne non ? (dans le sens sinon je sais creer que 1 personne)


Dernière édition par trikman le Jeu 10 Déc 2009, 17:58, édité 1 fois

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re

Message  trikman le Jeu 10 Déc 2009, 17:57

j'avais ete voir dans la doc mais j avais fait plusieurs class sauf celle la et je trouvait tout sauf charAt merci quand meme pour le lien :-) et la traduction lol

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Wark le Jeu 10 Déc 2009, 19:49

Dj x-fuse a écrit:Merci de rajouter le tag [Java] ou [LaJ1]. Smile

Et pour parfaire l'exemple de DjMan42 :
ceci devient cela Smile

Et pour encore parfaire.. cela devient ceci :

Code:
while(cr!='n'){
   ...
   cr = clavier.next().charAt(0);
   while(cr != 'o' || cr != 'n'){
      System.out.println("Oups ! Entrez o ou n !");
      cr = clavier.next().charAt(0);
   }
}

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  pbt le Jeu 10 Déc 2009, 20:00

Un "do while" dans ce cas t'évite de devoir écrire deux fois l'étape de lecture.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  DjMan42 le Ven 11 Déc 2009, 00:07

En fait ce bout de code permet à la fin de l'encodage d'une personne "de demander à l'utilisateur s'il veut encoder d'autres personnes"
Si, o le programme demander d'entrer une autre personne sinon, si n le programme s'arrete, autre erreur.

System.out.println("Voulez-vous continuer ? o/n" );
cr = clavier.next().charAt(0);
if (cr == 'n'){
ok = false;
}else{
if(cr != 'o')
throw new IllegalArgumentException("erreur");
}

Moi, j'ai utiliser une liste.

Mais avec un tableau (taille determiner au début) il faut, aussi un compteur pour compter la taille logique.(pour ne pas afficher "null").

DjMan42

Nombre de messages : 219
Prénom : Eden
Statut : Etudiant 1er Indu
Localisation : Bruxelles
Date d'inscription : 28/10/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Wark le Ven 11 Déc 2009, 06:58

Un peu violente l'exception pour ce cas-ci, non ? Shocked

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Trusty le Ven 11 Déc 2009, 08:38

Wark a écrit:Un peu violente l'exception pour ce cas-ci, non ? Shocked

c'est pas faux....

Trusty

Nombre de messages : 866
Age : 29
Prénom : Bastien
Statut : old 2010
Localisation : Ath
Date d'inscription : 30/10/2006

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Anthoblack le Ven 11 Déc 2009, 17:50

Trusty a écrit:
Wark a écrit:Un peu violente l'exception pour ce cas-ci, non ? Shocked

c'est pas faux....
Ils vont être contents, les utilisateurs, de ne pas avoir droit à une deuxième chance Razz Un simple message et un retour à la boucle me semble plus approprié. Sinon, tant qu'à faire barbare : exit(0)

Anthoblack

Nombre de messages : 764
Age : 28
Prénom : Anthony
Statut : Ex-étudiant
Localisation : Bruxelles
Date d'inscription : 11/03/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  DjMan42 le Ven 11 Déc 2009, 21:23

Anthoblack a écrit:ls vont être contents, les utilisateurs, de ne pas avoir droit à une deuxième chance Razz Un simple message et un retour à la boucle me semble plus approprié. Sinon, tant qu'à faire barbare : exit(0)

Entierment d'accord avec vous tous. Je dirai un retour dans la boucle "Voulez-vous continuer ?" au lieu du while.
En cas d'erreur répeter alors là il faut arêter le programme.

DjMan42

Nombre de messages : 219
Prénom : Eden
Statut : Etudiant 1er Indu
Localisation : Bruxelles
Date d'inscription : 28/10/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Wark le Sam 12 Déc 2009, 11:03

Et supprimer cette horrible variable ok qui peut-être remplacée par son test logique. Razz

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  mvh le Sam 12 Déc 2009, 11:24

Wark a écrit:Et supprimer cette horrible variable ok qui peut-être remplacée par son test logique. Razz
ok ...

_________________

La fête c'est nul sans Kidibul !
... (vieux proverbe local)



mvh

Nombre de messages : 5973
Age : 104
Prénom : Marcel VANHAELEN
Statut : (fin de bail)
Win 3.1 à reprendre
Localisation : Koekeliek de Baselberg
Date d'inscription : 06/12/2006

Revenir en haut Aller en bas

Re: TD 11 TestIMC (ex3)

Message  Contenu sponsorisé Aujourd'hui à 08:44


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum