Java 使用附加的if语句计算BMR?
我试图通过增加久坐、稍微活跃、活跃和非常活跃来计算BMR。代码将编译,但不会计算。这是第一次尝试,所以任何建议都是有帮助的。我已经成功创建了一个没有添加类别的BMR,但现在我无法进行计算。我试图在添加MaleBMR之前先让FemaleBMR工作Java 使用附加的if语句计算BMR?,java,if-statement,int,boolean,double,Java,If Statement,Int,Boolean,Double,我试图通过增加久坐、稍微活跃、活跃和非常活跃来计算BMR。代码将编译,但不会计算。这是第一次尝试,所以任何建议都是有帮助的。我已经成功创建了一个没有添加类别的BMR,但现在我无法进行计算。我试图在添加MaleBMR之前先让FemaleBMR工作 import java.util.Scanner; public class BMR2 { public static void main(String[] args) { Scanner kybd = new Scanner(S
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)
我很怀疑海报是在为多贝克教授在塞拉学院的CS12或CS13课程做实验作业。我现在在他的课堂上做着完全相同的事情 不管怎样 您应该从在顶部声明字段开始。使其更具可读性,更易于调试/维护 更改双倍权重=kybd.nextDouble();加倍重量=kybd.nextDouble() 对于生活方式选择评估器(久坐、活跃、非常活跃),请使用开关语句 在此处了解switch语句: 下面是我的版本。注意注释中的空白和适当的文档,使代码更易于阅读、理解和维护。 //代码从下面开始 导入java.util.Scanner 公共级BMR计算器 { 公共静态void main(字符串参数[]) { //田地
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倍体重单位磅)+(12.7倍身高单位英寸)–(6.8倍年龄)
*BMR女性:=655+(4.35倍体重)(4.7倍身高)(4.7倍年龄)
*/
如果(userChoice>=1&&userChoice您要求它读取一个
布尔值,但它看到了一些其他输入。请发布输入。我不确定在哪里可以找到其他输入。同样,我是java新手。为什么垂直空白的数量如此之多?对我来说阅读起来更简单。如果有帮助的话,我去掉了一些。比如chrylis说,你没有在你应该在的地方输入布尔值。当你运行这个程序时,在你问了久坐等问题之后,你问了四个布尔值。你的错误是告诉你,你在为其中至少一个输入不同的值。
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
{
System.out.println("Invalid gender choice. Please enter 1 for male, 2 for female !");
} // end if .. else block