最大心拍数とは、最大運動時に得られる最高心拍数です。最大心拍数の違いは、年齢と性別によって異なります。式 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;
}
}
}
}