td11 en java
+2
Sarko
parachute
6 participants
Ceibxl :: Discussion :: Cours
Page 1 sur 1
td11 en java
- 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- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Re: td11 en java
a la ligne 12
Tu as une Personne personnage a qui tu envoi un tableau de personnage (lirePersonne)
Tu as une Personne personnage a qui tu envoi un tableau de personnage (lirePersonne)
Sarko- Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008
Re: td11 en java
Et la prochaine fois met quelques formes de politesse vieu noob
Sarko- Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008
Re: td11 en java
Lol ct pr que Joker voit le code^^
Merci, mais en faite
est un objet personne.
maxIMC attend un tableau et renvoie un personne
Merci, mais en faite
- Code:
personnage = maxIMC(lirePersonnes());
est un objet personne.
maxIMC attend un tableau et renvoie un personne
parachute- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Re: td11 en java
arf ué :P putin tu programme comme de la merde n'empeche :P
Sarko- Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008
Re: td11 en java
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 ?
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- Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008
Re: td11 en java
ah bah nan, tu fais un
tabPers = new Personne [cpt];
cpt ++;
Ce qui est bizzaare oO
tabPers = new Personne [cpt];
cpt ++;
Ce qui est bizzaare oO
Sarko- Nombre de messages : 2134
Age : 36
Cercle : CEI tapette ²
Année Baptême : 2006
Date d'inscription : 10/07/2008
Re: td11 en java
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- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Re: td11 en java
Bon ce probleme la est résolu, il me rest
j'ai changé ca:
- 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- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Re: td11 en java
pour ton tableau ==> ne precise pas la taille pour un tab dynamique ? non ?
pcq ton .length ici vate renvoyer 1000
pcq ton .length ici vate renvoyer 1000
Joker- Nombre de messages : 5294
Age : 33
Cercle : CEI
Année Baptême : 2008
Date d'inscription : 28/09/2008
Re: td11 en java
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^^
BOn je peux enfin m'attaquer a la suite de l'exo
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
parachute- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Re: td11 en java
Ce qui me fait peur, c'est me dire que je codais aussi comme ca avant !
morfl
Avant c etais mieuuux... oupas !
morfl
Avant c etais mieuuux... oupas !
Re: td11 en java
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)
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- Nombre de messages : 1156
Age : 43
Cercle : CI
Année Baptême : 2001
Date d'inscription : 11/12/2008
Re: td11 en java
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
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
Re: td11 en java
Même pas Vector<E> ?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)
Edit:
et même pas avec google?Parachute a écrit:Ben oué, mais je sais plus cmt faire pour ...
kortenberg- Nombre de messages : 1156
Age : 43
Cercle : CI
Année Baptême : 2001
Date d'inscription : 11/12/2008
Re: td11 en java
kortenberg a écrit:Même pas Vector<E> ?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)
Salut moi c'est Mathieu
Edit:et même pas avec google?Parachute a écrit:Ben oué, mais je sais plus cmt faire pour ...
Nop, google n'était pas mon amis ce soir là!
parachute- CI recyclé
- Nombre de messages : 4782
Age : 35
Cercle : C(E)I
Année Baptême : 07
Date d'inscription : 05/10/2009
Ceibxl :: Discussion :: Cours
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|