2013-09-23 53 views
0

我正在嘗試通過添加久坐,有點主動,活躍和Very_Active來計算BMR。代碼將編譯但不會計算。這是第一次嘗試,所以任何建議都是有幫助的。我已經成功創建了沒有添加類別的BMR,但現在我無法獲得計算。我試圖得到公正的FemaleBMR先工作之前,我就MaleBMR還添加用附加的if語句計算BMR?

import java.util.Scanner; 

public class BMR2 

{ 
    public static void main(String[] args) 
    { 

    Scanner kybd = new Scanner(System.in); 

    System.out.print("Enter Height: "); 

    double Height = kybd.nextDouble(); 

    System.out.print("Enter Weight: "); 

    Double Weight = kybd.nextDouble(); 

    System.out.print("Enter Age: "); 

    int Age = kybd.nextInt(); 

    double FemaleBMR = 655 + 4.3 * Weight + 4.7 * Height - 6.8 * Age; 

    double MaleBMR = 66 + (6.3 * Weight) + (12.9 * Height) - (6.8 * Age); 

    int choc = 230; 
    System.out.println("Are you Sedentary, Somewhat_Active, Active, or Very_Active?: "); 
    boolean Sedentary = kybd.nextBoolean(); 
    boolean Somewhat_Active = kybd.nextBoolean(); 
    boolean Active = kybd.nextBoolean(); 
    boolean Very_Active = kybd.nextBoolean(); 

    if (Sedentary) 
     System.out.println("chocolate bars for female: "+ FemaleBMR*1.2/choc); 

    else if (Somewhat_Active) 
    System.out.println("chocolate bars for female: "+ FemaleBMR*1.3/choc); 

    else if (Active) 
     System.out.println("chocolate bars for female: "+FemaleBMR*1.4/choc); 

    else if (Very_Active) 
     System.out.println("chocolate bars for female: "+FemaleBMR*1.5/choc); 

    } 
    } 

編譯但不會計算收益

java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:840) 
at java.util.Scanner.next(Scanner.java:1461) 
at java.util.Scanner.nextBoolean(Scanner.java:1756) 
at BMR2.main(BMR2.java:43) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272) 
+0

你問它在一個'boolean'值來讀取,但它看到了一些其他輸入。請張貼輸入。 – chrylis

+0

我不知道我會在哪裏找到其他輸入。再次,我是新來的Java。 – user2805461

+0

爲什麼垂直空白的荒謬數量? –

回答

0

我嚴重懷疑這個帖子做了教授的實驗室任務塞貝爾學院的DoBeck CS12或CS13班。我現在正在同班上做同樣的事情。

反正,

您應該首先聲明您的領域在頂部。使其更易讀,更易於調試/維護。

更改Double Weight = kybd.nextDouble();加倍Weight = kybd.nextDouble();

對於生活方式選擇評估者(久坐,活躍,非常活躍),請使用switch語句。

瞭解switch語句中的位置:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

下面是我對它的版本。請注意註釋中的空白處和正確的文檔,以使代碼更具可讀性,易於理解和維護。

//代碼從以下開始

import java.util.Scanner;

公共類BMRCalculator

{

公共靜態無效主要(字符串ARGS [])

{

//字段

double BMRMale, BMRFemale; // male and female bmr calculation fields 

double height; // inches 
double weight; // pounds (lbs) 

final int maleOption = 1; 

final int femaleOption = 2; 

int userChoice; 

int age = 0; 


Scanner kb = new Scanner (System.in); // creates a keyboard scanner object called: kb 


    System.out.print("What is your age: "); 

    age = kb.nextInt(); 


    System.out.print("Enter your height (inches): "); 

    height = kb.nextDouble(); 

    System.out.print("Enter your weight (pounds): "); 

    weight = kb.nextDouble(); 




    // male or female gender selction prompt 

    System.out.print ("Enter 1 for male or 2 for female gender selection: "); 

    userChoice = kb.nextInt(); 

/*

*熱量燃燒的計算:

*哈里斯篤方法

* BMR男性:= 66 +(6.23 X磅重量)+(以英寸12.7 X高) - (6.8 X年齡)

* BMR women:= 655 +(4.35 X weight in pounds)+(4.7 X height in inches) - (4。7×年齡)

*/

如果(userChoice> = 1 & & userChoice < = 2)

{

switch(userChoice) 

    { 
    case maleOption: 

// BMR Men: = 66 + (6.23 X weight in pounds) + (12.7 X height in inches) – (6.8 X age) 

    BMRMale = 66 + (6.23 * weight) + (12.7 * height) - (6.8 * age); 

    System.out.println ("Your Male BMR is: " + BMRMale); 


    break; // break out of maleOption 


    case femaleOption: 

// BMR Women: = 655 + (4.35 X weight in pounds) + (4.7 X height in inches) – (4.7 X age) 


    BMRFemale = 655 + (4.35 * weight) + (4.7 * height) - (4.7 * age); 

    System.out.println ("Your Female BMR is: " + BMRFemale); 

    break; // break out of femaleOption 




    } // end switch case 

} //結束如果塊

別的//如果輸入1或2,則顯示錯誤。

{ 

    System.out.println("Invalid gender choice. Please enter 1 for male, 2 for female !"); 



} // end if .. else block 

} //結束主

} //結束類