最大心率是最大运动时获得的最高心率。最大心率的差异取决于年龄和性别。有一些简单的方法可以测量您预测的最大心率,例如公式 220 - 您的年龄 = 男性的预测最大心率。例如,一个 40 岁的男性预测的最大心率是 180 次/分钟。
该程序需要使用以下公式计算男性的最大心率:220-他们的年龄=最大心率和:212-他们的年龄=女性的最大心率。用户必须能够输入他们的年龄、选择他们的性别以及选择他们的静息心率。然后程序必须使用这个公式来确定您的目标心率:
目标心率=[(最大心率-静息心率)×80%]
程序必须能够显示用户的最大心率、静息心率和目标心率。
但由于某种原因,当我运行我的程序时,我收到它似乎没有完全接受输入,并在单击男性按钮时给了我一个错误的答案,它给了我男性 179.0 和女性 169.0 的答案。
我看了一遍又一遍,似乎无法弄清楚这个逻辑错误。这是我的代码。
public class MainHMR extends Activity implements View.OnClickListener {
Button chkCmd;
CheckBox Male, Femail;
EditText age, RestHeart;
TextView MaxHeart, TargetHeart;
int m = 220;
int f = 212;
int AgeResult =0, RestResultFinal =0, TargetHeartFinal =0;
double MaleResult, FemailResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_hmr);
Initilise();
format();
Male.setOnClickListener(this);
Femail.setOnClickListener(this);
chkCmd.setOnClickListener(this);
}
private void Initilise() {
// TODO Auto-generated method stub
/* Button */chkCmd = (Button) findViewById(R.id.bResults);
/* checkBox */Male = (CheckBox) findViewById(R.id.cbM);
/* checkBox */Femail = (CheckBox) findViewById(R.id.cbF);
/* EditText */age = (EditText) findViewById(R.id.etAge);
/* EditText */RestHeart = (EditText) findViewById(R.id.etRestHeart);
/* TextView */TargetHeart = (TextView) findViewById(R.id.etTargetHeard);
}
private void format() {
// TODO Auto-generated method stub
String change = age.getText().toString();
AgeResult = 0; // set it to 0 as the default
try {
AgeResult = Integer.parseInt(change);
System.out.println(AgeResult);
}
catch (NumberFormatException e){}
String changeTwo = RestHeart.getText().toString();
RestResultFinal = 0; // set it to 0 as the default
try {
RestResultFinal = Integer.parseInt(changeTwo);
System.out.println(RestResultFinal);
}
catch (NumberFormatException e){}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bResults:
if (Male.isChecked()) {
int result = m - AgeResult;
MaleResult = ((result - RestResultFinal) * 0.8);
String finalResult = Double.toString(MaleResult);
TargetHeart.setText(finalResult);
} else if (Femail.isChecked()) {
int result = f - AgeResult;
FemailResult = (int) ((result - RestResultFinal) * 0.8);
String finalResult = Double.toString(FemailResult);
TargetHeart.setText(finalResult);
break;
}
}
}
}