Question

I have no idea why my BMI value is always = to 0. I am programming noob what am i missing? other than that is my if statement alright? what am i missing?

    static void Main(string[] args) {
        double WeightKg = 0.0, HeightCm = 0.0, Weightlbs = 0.0, WeightOz = 0.0, BMI = 0.0, Feet = 0.0, Inches = 0.0;
        int BMIOption;
        string AnotherConversion;

        string BMIMenu = ("Which Measurement You Want to use to enter the weight and height?"
                        + "\n1)Enter 1 for Metric"
                        + "\n2)Enter 2 for British Imperial:");
        Console.Write(BMIMenu);
        BMIOption = int.Parse(Console.ReadLine());

        if (BMIOption == 1) {
            Console.Write("\nPlease Enter your Weight in Kilogram (kg):");
            WeightKg = int.Parse(Console.ReadLine());
            Console.Write("\nPlease Enter your Height in in centimetres (cm):");
            HeightCm = int.Parse(Console.ReadLine());

            BMI = WeightKg / (HeightCm * HeightCm);

            if (BMI >= 35) {
                Console.WriteLine("\nYour BMI is {0:C},Severe Obesity", BMI);
            } else if (BMI >= 30) {
                Console.WriteLine("\nYour BMI is {0:C},Obese", BMI);
            } else if (BMI >= 25) {
                Console.WriteLine("\nYour BMI is {0:C},OverWeight", BMI);
            } else if (BMI >= 18.5) {
                Console.WriteLine("\nYour BMI is {0:C},Healthy BodyWeight", BMI);
            } else if (BMI <= 18.5) {
                Console.WriteLine("\nYour BMI is {0:C},UnderWeight", BMI);
            }//End if

            Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");

            Console.ReadKey();
Was it helpful?

Solution

BMI is calculated with meters, not centimeters. So you need to convert the HeightCm to HeightM. If you don't do this, you get really small number, that is then printed as 0.

double HeightM = HeightCm / 100.0;
BMI = WeightKg / (HeightM * HeightM);

Also, when parsing, use double.Parse instead of int.Parse. The way it is right now, you will only parse the number without the decimal part.

OTHER TIPS

In this line:

BMI = WeightKg / (HeightCm * HeightCm);

The result ends up being very small (less than 1). Take an example where WeightKg is 55 and HeightCm is 165. The result is around 0.002.

When you display it as {0:C}, it's being displayed as zero. Use {0:G} to see the actual value.

even so your formula is wrong, as Martin says u must replace the int.Parse with double AND

BMI = WeightKg / ((HeightCm/100) * (HeightCm/100));

use this for calculation it is HEIGHT IN METERS :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top