2016-11-22 163 views
-3

我无法弄清楚需要用什么来创建带有类的计算器。任何帮助,将不胜感激。使用类别的BMI计算器

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();我不太清楚我应该放在这些括号里面什么,因为没有任何我可以放在那里,而不会在我身上发生错误。

+0

您正在使用不存在的变量。 –

+1

您的问题描述非常不清楚。一个非常明显的问题是:outputBMI接受两个参数'int heightInInches,int weightInPounds',但你用none调用它:'outputBMI();' – tnw

+0

我不完全确定我如何用参数调用它,因为我输入的所有东西都是'工作?欢呼的帮助! – Luke

回答

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

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()); 
    } 
}