Ceibxl
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

td11 en java

+2
Sarko
parachute
6 participants

Aller en bas

td11 en java Empty td11 en java

Message par parachute Mar 8 Déc - 20:57

Code:
import java.util.Scanner ;

public class TestIMC {

    public static void main ( String[] args ) {
   Personne personnage;
   Personne math = new Personne ("Math", 70, 180);
   Personne plop = new Personne ("Plop", 100, 175);
   System.out.println (math);
   Afficher (math.calculerIMC(), math.getNom());
   Afficher (plop.calculerIMC(), plop.getNom());
   personnage = maxIMC(lirePersonnes());
   Afficher (personnage.calculerIMC(), personnage.getNom());
   }
   
    public static void   Afficher (double total, String n){
   System.out.println("Indice de Masse Corporelle de " + n +" est de "+ total);
    }
   
   public static Personne[] lirePersonnes (){
   Scanner clavier = new Scanner ( System.in ) ;
   double taille;
   double poids;
   double imc;
   String nom;
   char out= 'n';
   int cpt =0;
   Personne [] tabPers;
   tabPers = new Personne [1000];

   while  (out == 'n' || out == 'N' ){
       System.out.println("Entrer un nom:  ");
       nom= clavier.next();
       System.out.println("Entrer la taille de "+nom);
       taille= clavier.nextDouble();
       System.out.println("Entrer le poids de "+nom);
       poids = clavier.nextDouble();
       System.out.println("Avez-vous fini? (Y/N)");
       out= clavier.next().charAt(0);
      tabPers = new Personne [cpt];
       cpt ++;
      if (out=='Y' || out == 'y')
      break;   
      }
   return tabPers;

   }   
       public static Personne maxIMC (Personne [] tab){
   Personne pers = null; // Sert a rien, null par définition...

   for (int i=0; i<tab.length;i++)
       pers  =  MaxImc (tab[i], tab [i+1]);

   return pers ;
   }

       public static Personne MaxImc (Personne pers1,Personne pers2){
          double imc1=pers1.calculerIMC();
          double imc2=pers2.calculerIMC();
          if (imc1<imc2)
              return pers2;
          else
              return pers1;
           }
}

Code:
public class Personne {
       private String nom;
   double poids;
   double taille;
   
   public Personne (String unNom, double unPoids, double uneTaille ){
      nom = unNom;
      poids= unPoids;
      taille= uneTaille;
}

   public String getNom(){
       return nom;}
   public double getTaille(){
       return taille;}
   public double getPoids(){
       return poids;}
   public String toString() {
       String res = "    " + nom + "    " + poids +"    "+ taille+"    ";
            return res;
   }
   public double calculerIMC(){
       double imc= poids/(taille*taille);
       return imc;}
}

erreur: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable pers may not have been initialized

at TestIMC.maxIMC(TestIMC.java:54)
at TestIMC.main(TestIMC.java:12)
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Sarko Mar 8 Déc - 21:42

a la ligne 12

Tu as une Personne personnage a qui tu envoi un tableau de personnage (lirePersonne)
Sarko
Sarko

Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Sarko Mar 8 Déc - 21:45

Et la prochaine fois met quelques formes de politesse vieu noob Razz
Sarko
Sarko

Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par parachute Mar 8 Déc - 21:53

Lol ct pr que Joker voit le code^^

Merci, mais en faite
Code:
personnage = maxIMC(lirePersonnes());

est un objet personne.

maxIMC attend un tableau et renvoie un personne
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Sarko Mar 8 Déc - 21:58

arf ué :P putin tu programme comme de la merde n'empeche :P
Sarko
Sarko

Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Sarko Mar 8 Déc - 22:02

En tt cas le probleme vien de la :

public static Personne maxIMC (Personne [] tab){
Personne pers = null; // Sert a rien, null par définition...

for (int i=0; i<tab.length;i++)
pers = MaxImc (tab[i], tab [i+1]);

return pers ;
}

Et plus precisement de la je dirais :

dans lirePersonne :

Personne [] tabPers;
tabPers = new Personne [1000];

Tu crée une tableau de 1000 personnes

Disons que tu en mette 100, il y aura 900 autre case tableau a NULL

Et dans ta boucle tu fais un tab.length , y aura bien un moment ou ca va manipulé des null, et il va craché nan ?
Sarko
Sarko

Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Sarko Mar 8 Déc - 22:03

ah bah nan, tu fais un

tabPers = new Personne [cpt];
cpt ++;

Ce qui est bizzaare oO
Sarko
Sarko

Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par parachute Mar 8 Déc - 22:26

Sarko a écrit:En tt cas le probleme vien de la :

public static Personne maxIMC (Personne [] tab){
Personne pers = null; // Sert a rien, null par définition...

for (int i=0; i<tab.length;i++)
pers = MaxImc (tab[i], tab [i+1]);

return pers ;
}

Et plus precisement de la je dirais :

dans lirePersonne :

Personne [] tabPers;
tabPers = new Personne [1000];

Tu crée une tableau de 1000 personnes

Disons que tu en mette 100, il y aura 900 autre case tableau a NULL

Et dans ta boucle tu fais un tab.length , y aura bien un moment ou ca va manipulé des null, et il va craché nan ?

Ben oué, mais je sais plus cmt faire pour avoir un tableau qui évolue avec le nbre d'entrée (et non on peut pas faire de list)
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par parachute Mar 8 Déc - 22:31

Bon ce probleme la est résolu, il me rest

Code:
Exception in thread "main" java.lang.NullPointerException
   at TestIMC.MaxImc(TestIMC.java:60)
   at TestIMC.maxIMC(TestIMC.java:53)
   at TestIMC.main(TestIMC.java:13)

j'ai changé ca:
Code:
   public static Personne[] lirePersonnes (){
   Scanner clavier = new Scanner ( System.in ) ;
   double taille;
   double poids;
   //double imc;
   String nom;
   char out= 'n';
   int cpt =0;
   Personne [] tabPers;
   tabPers = new Personne [10];

   while  (out == 'n' || out == 'N' ){
       System.out.println("Entrer un nom:  ");
       nom= clavier.next();
       System.out.println("Entrer la taille de "+nom);
       taille= clavier.nextDouble();
       System.out.println("Entrer le poids de "+nom);
       poids = clavier.nextDouble();
       System.out.println("Avez-vous fini? (Y/N)");
       out= clavier.next().charAt(0);
      tabPers[cpt] = new Personne(nom,poids,taille);
       cpt ++;
      if (out=='Y' || out == 'y')
      break;   
      }
   return tabPers;
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Joker Mar 8 Déc - 23:10

pour ton tableau ==> ne precise pas la taille Smile pour un tab dynamique ? non ?
pcq ton .length ici vate renvoyer 1000
Joker
Joker

Nombre de messages : 5294
Age : 33
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par parachute Mer 9 Déc - 0:25

Voila apres plusieurs prises de tête, j'ai trouvé les erreurs. Si on entre pas deux personnes, plantage.

Si on remplissait pas le tableau, plantage.

Donc voila le code qui fait compilé et executer correctement^^

Code:
import java.util.Scanner ;

public class TestIMC {

    public static void main ( String[] args ) {
       Personne personnage;
       Personne math = new Personne ("Math", 70, 180);
       Personne plop = new Personne ("Plop", 100, 175);
       System.out.println (math);
       Afficher (math.calculerIMC(), math.getNom());
       Afficher (plop.calculerIMC(), plop.getNom());
       personnage = maxIMC(lirePersonnes());
       Afficher (personnage.calculerIMC(), personnage.getNom());
   }
   
    public static void   Afficher (double total, String n){
       System.out.println("Indice de Masse Corporelle de " + n +" est de "+ total);
    }
   
   public static Personne[] lirePersonnes (){
      Scanner clavier = new Scanner ( System.in ) ;
      double taille;
      double poids;
      String nom;
      char out= 'n';
      int cpt =0;
      Personne [] tabPers;
      tabPers = new Personne [10];

      while  (out == 'n' || out == 'N' ){
         System.out.println("Entrer un nom:  ");
         nom= clavier.next();
         System.out.println("Entrer la taille de "+nom);
         taille= clavier.nextDouble();
         System.out.println("Entrer le poids de "+nom);
         poids = clavier.nextDouble();
         System.out.println("Avez-vous fini? (Y/N)");
         out= clavier.next().charAt(0);
         tabPers[cpt] = new Personne(nom,poids,taille);
         
         if (out=='Y' || out == 'y' && cpt<1){
            if (cpt<1){
               System.out.println("Il faut 2 personnes au minimum! Rajoutez-en une!");
               out = 'n';}
            else
               break;   
         }
         cpt ++;
      }
   
      return tabPers;

   }   
   public static Personne maxIMC (Personne [] tab){
      Personne pers = null;

      for (int i=0; i<tab.length-1 ;i++){
         if (tab[i+1]!= null)
            pers  =  MaxImc (tab[i], tab [i+1]);
   
      }return pers ;
   
   }

    public static Personne MaxImc (Personne pers1,Personne pers2){
       double imc1=pers1.calculerIMC();
       double imc2=pers2.calculerIMC();
       if (imc1<imc2)
           return pers2;
       else
           return pers1;
       }
}

Code:
public class Personne {
    private String nom;
   double poids;
   double taille;
   
public Personne (String unNom, double unPoids, double uneTaille ){
   nom = unNom;
   poids= unPoids;
   taille= uneTaille;
}

public String getNom(){
   return nom;}
public double getTaille(){
   return taille;}
public double getPoids(){
   return poids;}
public String toString() {
   String res = "    " + nom + "    " + poids +"    "+ taille+"    ";
    return res;
   }
public double calculerIMC(){
   double imc= this.getPoids()/(this.taille/100*this.taille/100);
   return imc;}
}

BOn je peux enfin m'attaquer a la suite de l'exo Very Happy
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par dax Mer 9 Déc - 10:01

Ce qui me fait peur, c'est me dire que je codais aussi comme ca avant !
morfl

Avant c etais mieuuux... oupas !
dax
dax

Nombre de messages : 2257
Age : 41
Cercle : CEI
Année Baptême : 2005
Date d'inscription : 29/07/2008

http://www.noobeek.com

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par kortenberg Mer 9 Déc - 10:13

Tu sais que ta fct
public static Personne maxIMC (Personne [] tab)
retourne le max entre les deux derniers élément?

Que ta "protection" if (tab[i+1]!= null)
fait juste que ça se torche une iteration plus loin si un élément est null au millieu?

Ta protection anti null devrait se trouver dans
public static Personne MaxImc (Personne pers1,Personne pers2)
kortenberg
kortenberg

Nombre de messages : 1156
Age : 43
Cercle : CI
Année Baptême : 2001
Date d'inscription : 11/12/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par pas de chance Mer 9 Déc - 10:28

si tu screen le shot en warcraft tu nuul le [Ctrlx²-(1+1)!+4=7]

donc tu in le charout sur la base de donné en spp sur le bus

et pour finir tu break le seat via un double MaxImc flash




bon ok dehors lol!
pas de chance
pas de chance
Délégué nécrophile

Nombre de messages : 9073
Age : 35
Cercle : CEI le meilleur cercle du monde
Année Baptême : 2008
Date d'inscription : 03/09/2008

http://www.jeunessedevirelles.be

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par kortenberg Mer 9 Déc - 12:02

Parachute a écrit:Ben oué, mais je sais plus cmt faire pour avoir un tableau qui évolue avec le nbre d'entrée (et non on peut pas faire de list)
Même pas Vector<E> ?
Edit:
Parachute a écrit:Ben oué, mais je sais plus cmt faire pour ...
et même pas avec google?
kortenberg
kortenberg

Nombre de messages : 1156
Age : 43
Cercle : CI
Année Baptême : 2001
Date d'inscription : 11/12/2008

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par parachute Mer 9 Déc - 12:17

kortenberg a écrit:
Parachute a écrit:Ben oué, mais je sais plus cmt faire pour avoir un tableau qui évolue avec le nbre d'entrée (et non on peut pas faire de list)
Même pas Vector<E> ?

Salut moi c'est Mathieu albino

Edit:
Parachute a écrit:Ben oué, mais je sais plus cmt faire pour ...
et même pas avec google?


Nop, google n'était pas mon amis ce soir là!
parachute
parachute
CI recyclé

Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009

Revenir en haut Aller en bas

td11 en java Empty Re: td11 en java

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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