user5864910
user5864910

Reputation:

Basic Java, passing data between methods

I am new to Java and trying to make a basic body mass calculator. My problem is I need to ask the questions, convert the measurements and then pass it to another method then display the results in a separate method. I've added my code below but keep getting a 1.0 returned as the answer each time.

import java.util.Scanner;

public class calcBMI {

    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner( System.in );

        System.out.print("Enter weight in pounds: ");
        double weightInPounds = keyboard.nextDouble();
        double weightInKg = (weightInPounds / 2.2);

        System.out.print("Enter height in inches: ");
        double heightInInches = keyboard.nextDouble();
        double heightInMeters = (heightInInches / 0.254);
        double resultBMI = 1;

        displayResults(resultBMI);
    }

    public static double bodyMassIndex(double weightInKg, double 
    heightInMeters)
    {
        double resultBMI = weightInKg / Math.pow(heightInMeters, 2) * 1.375;

        return resultBMI;
    }        

    public static void displayResults(double resultBMI)
    {

        System.out.printf("The calculated body mass index was: " + resultBMI);

        System.out.println();
    }
}

Updated code, now getting; Enter weight in pounds: 180 Enter height in inches: 68 The calculated body mass index was: 1.1415618118905313E-5 BUILD SUCCESSFUL (total time: 3 seconds)

import java.util.Scanner;

public class calcBMI {

    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner( System.in );

        System.out.print("Enter weight in pounds: ");
        double weightInPounds = keyboard.nextDouble();
        double weightInKg = (weightInPounds / 2.2);

        System.out.print("Enter height in inches: ");
        double heightInInches = keyboard.nextDouble();
        double heightInMeters = (heightInInches / 0.0254);


        displayResults(bodyMassIndex(weightInKg, heightInMeters));
    }

public static double bodyMassIndex(double weightInKg, double heightInMeters)
    { 
        return (weightInKg / Math.pow(heightInMeters, 2));
    }        

public static void displayResults(double resultBMI)
    {

        System.out.printf("The calculated body mass index was: " + resultBMI);

        System.out.println();
    }
}

Upvotes: 1

Views: 261

Answers (2)

user3437460
user3437460

Reputation: 17454

You get 1.0 because you hard coded it as such.

Change this:

double resultBMI = 1;

To:

double resultBMI = bodyMassIndex(weightInKG, heightInMeters);

By the way, you could also have returned BMI directly in the method and there is no need to multiply by 1.375 anymore since you are already supplying weight in KG:

public static double bodyMassIndex(double weightInKg, double heightInMeters)
{
    return (weightInKg / (heightInMeters*heightInMeters));
} 

Add on:

Your conversion from inches to meters is wrong as well. It should be:

double heightInMeters = (heightInInches * 0.0254);

Upvotes: 0

Mohammed Aouf Zouag
Mohammed Aouf Zouag

Reputation: 17132

You are not calling the bodyMassIndex method in your code at all. Change

displayResults(resultBMI);

to

displayResults(bodyMassIndex(weightInKg, heightInMeters));

resultBMI equals 1, so of course the output would always be :

"The calculated body mass index was: 1"

Full code:

public static void main(String[] args) {

    System.out.print("Enter weight in pounds: ");
    double weightInPounds = keyboard.nextDouble();
    double weightInKg = (weightInPounds / 2.2);

    System.out.print("Enter height in inches: ");
    double heightInInches = keyboard.nextDouble();
    double heightInMeters = (heightInInches / 0.254);        

    // You can get rid of the resultBMI variable
    displayResults(bodyMassIndex(weightInKg, heightInMeters));
}

Upvotes: 1

Related Questions