使用班级的BMI计算器

时间:2016-11-22 20:33:56

标签: java

我无法弄清楚要放什么,因为我需要用类创建计算器。任何帮助将不胜感激。

    import java.util.*;
public class BMI
{
    public static void main(String[] args)
    {
        heightInInches();
        weightInPounds();
        outputBMI();

    }
    public static void heightInInches()
    {
        Scanner input = new Scanner(System.in);

        System.out.println("What is your height in feet between 2 and 7? " );
        int feet = input.nextInt();

        while (feet < 2 || feet > 7)
        {
          System.out.print("Retry between 2 and 7: ");
          feet = input.nextInt();
        }

        System.out.println("How many inches between 0 and 11? " );
        int inches = input.nextInt();

        while (inches < 0 || inches > 11)
        {
          System.out.print("Retry between 0 and 11: ");
          inches = input.nextInt();

        }
        int actualHeight = (feet * 12) + inches;

        System.out.println("You are this tall in inches: " + actualHeight); 
    }
    public static int weightInPounds()
    {
        Scanner input = new Scanner(System.in);

        System.out.println("What is your weight in stone between 3 and 30? " );
        int stone = input.nextInt();

        while (stone < 3 || stone > 30)
        {
          System.out.print("Retry between 3 and 30: ");
          stone = input.nextInt();
        }

        System.out.println("How many pounds between 0 and 13? " );
        int pounds = input.nextInt();

        while (pounds < 0 || pounds > 13)
        {
          System.out.print("Retry between 0 and 13: ");
          pounds = input.nextInt();
        }
        int actualWeight =(stone * 14) + pounds;
        System.out.println("You are this heavy in pounds: " + actualWeight); 
        return actualWeight;

    }
    public static void outputBMI(int heightInInches, int weightInPounds)
    {
        double BMI = (weightInPounds * 703) / (heightInInches * heightInInches);

        System.out.println("This is your BMI: " + BMI);

    }
}

这就是outputBMI();我不太确定我应该放在这些括号中,因为没有它可以放在那里而不会给我带来错误。

2 个答案:

答案 0 :(得分:1)

您没有将任何参数传递给 outputBMI 方法。

同时考虑使用Double而不是Integers,这样您就可以减少问题:)

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        int height = heightInInches();
        int weight = weightInPounds();
        outputBMI(height, weight);

    }

    public static int heightInInches()
    {
        Scanner input = new Scanner(System.in);
        System.out.println("What is your height in feet between 2 and 7? " );

        int feet = input.nextInt();

        while (feet < 2 || feet > 7)
        {
          System.out.print("Retry between 2 and 7: ");
          feet = input.nextInt();
        }

        System.out.println("How many inches between 0 and 11? " );
        int inches = input.nextInt();

        while (inches < 0 || inches > 11)
        {
          System.out.print("Retry between 0 and 11: ");
          inches = input.nextInt();

        }

        int actualHeight = (feet * 12) + inches;
        System.out.println("You are this tall in inches: " + actualHeight); 
        return actualHeight;
    }

    public static int weightInPounds()
    {
        Scanner input = new Scanner(System.in);

        System.out.println("What is your weight in stone between 3 and 30? " );
        int stone = input.nextInt();

        while (stone < 3 || stone > 30)
        {
          System.out.print("Retry between 3 and 30: ");
          stone = input.nextInt();
        }

        System.out.println("How many pounds between 0 and 13? " );
        int pounds = input.nextInt();

        while (pounds < 0 || pounds > 13)
        {
          System.out.print("Retry between 0 and 13: ");
          pounds = input.nextInt();
        }
        int actualWeight =(stone * 14) + pounds;
        System.out.println("You are this heavy in pounds: " + actualWeight); 
        return actualWeight;

    }

    public static void outputBMI(int heightInInches, int weightInPounds)
    {
        double BMI = (weightInPounds * 703) / (heightInInches * heightInInches);

        System.out.println("This is your BMI: " + BMI);
    }
}

在此处试试:https://repl.it/E5fv/0

答案 1 :(得分:0)

以面向对象的方式。创建三个类Weight,Height和BMI是有意义的。见下文。这种方法将各种转换封装为英寸和磅到BMI公式。

import java.util.*;

class Weight {
  static private int STONE_TO_POUNDS = 14;
  private Integer weightInPounds;

  void setWeight(int stone, int pounds) {
    weightInPounds = (stone * STONE_TO_POUNDS) + pounds;
  }

  Integer getWeightInPounds() {
    return weightInPounds;
  }
}

class Height {
   static private int FEET_TO_INCHES = 12;
   private Integer heightInInches;

  void setHeight(int feet, int inches) {
      heightInInches = (feet * FEET_TO_INCHES) + inches;
   }

  Integer getHeightAsInches() {
    return heightInInches;

  }
}

class BMI {
  private Height height;
  private Weight weight;

  void setHeight(Height height) {
     this.height = height;
  }

  void setWeight(Weight weight) {
    this.weight = weight;
  }

  double calculate() {
      return (weight.getWeightInPounds() * 703) / (height.getHeightAsInches().intValue() * height.getHeightAsInches().intValue());
  }
}


public class Main
{
    public static void main(String[] args)
    {
        BMI bmi = new BMI();


        bmi.setHeight(getHeight());
        bmi.setWeight(getWeight());

        outputBMI(bmi);

    }

    public static Height getHeight()
    {
        Height height = new Height();
        Scanner input = new Scanner(System.in);
        System.out.println("What is your height in feet between 2 and 7? " );

        int feet = input.nextInt();

        while (feet < 2 || feet > 7)
        {
          System.out.print("Retry between 2 and 7: ");
          feet = input.nextInt();
        }

        System.out.println("How many inches between 0 and 11? " );
        int inches = input.nextInt();

        while (inches < 0 || inches > 11)
        {
          System.out.print("Retry between 0 and 11: ");
          inches = input.nextInt();

        }

        height.setHeight(feet, inches);
        System.out.println("You are this tall in inches: " + height.getHeightAsInches()); 

        return height;
    }

    public static Weight getWeight()
    {
        Weight weight = new Weight();
        Scanner input = new Scanner(System.in);

        System.out.println("What is your weight in stone between 3 and 30? " );
        int stone = input.nextInt();

        while (stone < 3 || stone > 30)
        {
          System.out.print("Retry between 3 and 30: ");
          stone = input.nextInt();
        }

        System.out.println("How many pounds between 0 and 13? " );
        int pounds = input.nextInt();

        while (pounds < 0 || pounds > 13)
        {
          System.out.print("Retry between 0 and 13: ");
          pounds = input.nextInt();
        }


        weight.setWeight(stone, pounds);
        System.out.println("You are this heavy in pounds: " + weight.getWeightInPounds()); 
        return weight;

    }

    public static void outputBMI(BMI bmi)
    {

        System.out.println("This is your BMI: " + bmi.calculate());
    }
}