Как использовать Math.pow для расчета BMI - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь написать программу, которая рассчитывает ИМТ мужчин или женщин.Моя проблема на данный момент заключается в том, что я объявил все переменные и импортировал java.util.scanner.
. Я просто не могу получить коды для запуска формулы, которую я использовал для расчета и определения, является ли человек мужчиной или женщиной.Вы можете найти мой код ниже.
P / S, да, некоторые сообщения на французском языке, я сейчас изучаю CS на французском, но это не должно быть проблемой.Заранее спасибо за тех, кто мог мне помочь.

import java.util.Scanner;
public class exercise11 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
          //Decleration des variables
          double Poids;
          double Taille;
          double sc;
          double MetH;
          double MetF;
          Scanner in = new Scanner(System.in);

          System.out.println("Mettrez votre Poids");
           Poids = in.nextDouble();

          System.out.println("Mettrez votre Taille");
           Taille = in.nextDouble();


          Scanner Gender = new Scanner(System.in);
          System.out.println("Mettre votre sexe");

          String gender = "Homme";
          String gender2 = "Femme";
          gender = Gender.next();
          gender2 = Gender.next();
          sc = Math.pow(Poids, 0.425) * Math.pow(Taille, 0.725) *0.202;
          MetH = sc * 24 * 40;
          MetF = sc * 24 * 35;

          System.out.println("Le Metabolisme pour un homme est: " + MetH);
          System.out.println("Le Metabolisme pour une femme est: " + MetF);
    }

}

Я ожидал, что коды будут использовать формулу и возвращать значение, но после того, как я объявил свой вес и пол, ничего не осталось.

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Вы дважды звоните Gender.next(), когда принимаете данные для Пола.Это создает впечатление, что программа ничего не делает, потому что ждет дополнительного ввода.

Вы должны использовать только одну переменную для пола, а затем использовать if, чтобы проверить, что это за пол ивыполните соответствующие вычисления.

Вот как это будет выглядеть исправлено:

System.out.println("Mettre votre sexe (Homme or Femme)");
String gender = in.next();
sc = Math.pow(Poids, 0.425) * Math.pow(Taille, 0.725) *0.202;
MetH = sc * 24 * 40;
MetF = sc * 24 * 35;

if (gender.equalsIgnoreCase("Homme")) {
    System.out.println("Le Metabolisme pour un homme est: " + MetH);
}
else if (gender.equalsIgnoreCase("Femme")){
    System.out.println("Le Metabolisme pour une femme est: " +  MetF);
}

Теперь, когда пользователь вводит Homme или Femme, он выполнит правильный расчет.Я также удалил лишние Scanner, которые вы использовали под названием Gender, и просто повторно использовал in Scanner.

Если вы хотите, чтобы всегда вычислял оба пола, вы не будетенужно принять участие для этого на всех!Просто сразу вычислите оба и удалите весь код, который вы используете для ввода данных для пола.

РЕДАКТИРОВАТЬ: Вот полный код с внесенными изменениями:

class exercise11 {
   public static void main(String[] args) {
      //Decleration des variables
      double Poids;
      double Taille;
      double sc;
      double MetH;
      double MetF;
      Scanner in = new Scanner(System.in);

      System.out.println("Mettrez votre Poids");
       Poids = in.nextDouble();

      System.out.println("Mettrez votre Taille");
       Taille = in.nextDouble();

      System.out.println("Mettre votre sexe");
       String gender = in.next();

      sc = Math.pow(Poids, 0.425) * Math.pow(Taille, 0.725) *0.202;
      MetH = sc * 24 * 40;
      MetF = sc * 24 * 35;

      if (gender.equalsIgnoreCase("Homme")) {
          System.out.println("Le Metabolisme pour un homme est: " + MetH);
      }
      else if (gender.equalsIgnoreCase("Femme")){
          System.out.println("Le Metabolisme pour une femme est: " +  MetF);
      }
   }
}
0 голосов
/ 26 сентября 2019

Ваш код работает нормально.Похоже, вы не указали правильное количество входов.

Я протестировал код со следующими входами:

12 23 Homme

Ниже приведен код после некоторого рефакторинга кода.Вы можете увидеть, как это работает здесь :

pulic class exercise11 
{
    public static void main(String[] args)
    {
        try(Scanner in = new Scanner(System.in))
        {
          System.out.println("Mettrez votre Poids");
          double Poids = in.nextDouble();

          System.out.println("Mettrez votre Taille");
          double Taille = in.nextDouble();

          System.out.println("Mettre votre sexe");
          String gender = in.next();

          double sc = Math.pow(Poids, 0.425) * Math.pow(Taille, 0.725) *0.202;
          if( gender.equalsIgnoreCase("Homme") )
          {
            double MetH = sc * 24 * 40;
            System.out.println("Le Metabolisme pour un homme est: " + MetH);
          }
          else if( gender.equalsIgnoreCase("Femme") )
          {
            double MetF = sc * 24 * 35;
            System.out.println("Le Metabolisme pour une femme est: " + MetF);
          }
          else
          {
            System.out.println("Vous avez entré un sexe invalide");
          }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...