2013-09-23 2 views
0

Я пытаюсь вычислить BMR с добавлением Sedentary, Somewhat_Active, Active и Very_Active. Код будет компилироваться, но не будет вычисляться. Это первая попытка, поэтому любые рекомендации полезны. Я успешно создал BMR без добавленной категории, но теперь я не могу вычислить. Я пытаюсь получить только FemaleBMR работать первым, прежде чем я также добавить на MaleBMRРасчет BMR с дополнительными утверждениями if?

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 в Сьерра-Колледже. Сейчас я делаю то же самое в своем классе.

В любом случае,

Вы должны начать с объявляя свои поля в верхней части. Делает его более читаемым и более легким для отладки/поддержки.

Смена двойного веса = kybd.nextDouble(); удвоить вес = kybd.nextDouble();

Для оценщика выбора образа жизни (сидячий, активный, очень активный) используйте оператор switch.

Узнайте о переключателе заявлении здесь: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Ниже моя версия этого. Обратите внимание на пробелы и правильную документацию в комментариях, чтобы сделать код более читаемым, понятным и поддерживаемым.

// КОД НАЧИНАЕТСЯ НИЖЕ

импорта java.util.Scanner;

общественного класса BMRCalculator

{

государственной статической силы основных (String арг [])

{

// Поля

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 Men: = 66 + (6,23 х вес в фунтах) + (12,7 х высота в дюймах) - (6.8 X возраст)

* BMR Женщины: = 655 + (4.35 X вес в фунтах) + (4.7 X высота в дюймах) - (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 

} // конец Основные

} // конец класса

Смежные вопросы