Probleme java

Fermé
Fayss - 21 sept. 2008 à 14:34
 Fayss - 21 sept. 2008 à 15:44
Bonjour,

je débute dans la programmation, et j ai un exercice que je n arrive pas a résoudre :

" L'indice de Quételet, est révélateur de l'état d"une personne.
Une personne normale devrait avoir un indice compris entre 20 et 25.
Voici comment est calculé cet indice : Q = P/T²
T est la taille de la personne exprimée en mètre et P le poids de la personne exprimé en kg.
Le programme lit la taille (réel) et le poids (entier) de la personne. Il calcule et affiche son indice de Quételet et annonce si son état est normal."

Donc mes soucies sont : pour la taille je ne sais pas comment faire pour que ce soit un chiffre réel .
et a la fin je ne sais pas comment m y prendre avec le" if "et "else".

Voila ou j en suis :


/**Entraînement aux multiplications, n°1
@Fayçal -- 22/09/2008
*/

public class multi1_18 {

public static java.util.Scanner scanner = new java.util.Scanner(System.in);

public static void main(String[] args) {

double taille, poids, indiceQuetlet;

System.out.println("Tapez votre taille en metre :");
taille = scanner.nextInt();// unite en metre
System.out.println("Tapez votre poids en kg :");
poids = scanner.nextInt();// unite kg
indiceQuetlet = (poids/(taille*taille));
System.out.println("Votre indice de Quetlet est de :" +( indiceQuetlet));


if ((indiceQuetlet < 20) && (indiceQuetlet > 25)){
System.out.println("Votre etat est anormal");
}

else {
System.out.println("Votre etat est normal");

}
}

}
A voir également:

3 réponses

...
0
Merci bien !
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
21 sept. 2008 à 15:32
Bonjour,


/**Entraînement aux multiplications, n°1
@Fayçal -- 22/09/2008
*/
public class multi1_18 {

public static java.util.Scanner scanner = new java.util.Scanner(System.in);

public static void main(String[] args) {
 float taille;
 int poids, indiceQuetlet;

 System.out.println("Tapez votre taille en metre :");
 taille = scanner.nextFloat();// unite en metre
 System.out.println("Tapez votre poids en kg :");
 poids = scanner.nextInt();// unite kg
 indiceQuetlet = (int) (poids/(taille*taille));
 System.out.println("Votre indice de Quetlet est de :" + indiceQuetlet);


 if (indiceQuetlet < 20 || indiceQuetlet > 25){
  System.out.println("Votre etat est anormal");
 } else {
  System.out.println("Votre etat est normal");
 }

}

}


Commentaires:
Pour manipuler des entiers, il faut utiliser des int ou des long.
Pour manipuler des réels, des float ou des doubles.
La taille est un réel, c'est un float, les autres des entiers, donc des int.

indiceQuetlet = (int) (poids/(taille*taille)); : le résultat de taille*taille est un float. Le résultat de poids/(taille*taille) est un float aussi (pour faire le calcul, le compilateur fait un cast implicite de poids en float). Autrement dit, pour stocker le résultat final (un float donc) dans indiceQuetlet qui est un int, il faut faire un cast en int (je pense que si tu ne le spécifies pas directement la machine virtuelle le fait automatiquement, mais bon, au moins c'est explicite).

Enfin, indiceQuetlet < 20 || indiceQuetlet > 25 marchera mieux que indiceQuetlet < 20 && indiceQuetlet > 25, parce que je ne connais pas de nombre qui soit à la fois plus petit que 20 et plus grand que 25...

Cordialement
-1