2016-11-22 161 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()); 
    } 
}