当前位置: 首页 > 知识库问答 >
问题:

计算收到错误结果

江永安
2023-03-14

但是由于某种原因,当我运行我的程序时,它似乎没有完全接受输入,并且给我一个错误的答案,当按下按钮时,它给我的答案是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;
    }

}
}
}

共有1个答案

何超英
2023-03-14

好吧,我能理解如果你是176的男性和169的女性...但不是179。你确定吗?

我怀疑integer.parseint对您来说是失败的--但您无法判断,因为这一点:

catch (NumberFormatException e){}

永远不要只抓到一个例外而完全忽略它。至少要在那里登录。

// I've changed the names of some variables to comply with conventions
double maximumRate = MALE_MAXIMUM_RATE_LIMIT - parsedAge;
double targetRate = (maximumRate - parsedRestingRate) * 0.8;
 类似资料:
  • 大家好。我卡住了,不明白为什么代码会给我一个“错误”的答案。 我的任务是:编写一个程序,取数字并计数,直到用户输入“exit”,然后程序打印出用户刚刚插入的所有数字的摘要并停止。 我现在正在网上学习java,不知道该如何回答:当你输入1或2或3个或更多的数字时,它会计算并打印错误的结果,甚至代码无法编译并弹出一个错误。 例如。你放了2个数字,有一个错误 线程“main”java.lang.Numb

  • 导入java.util.Scanner;公共类GroupActivity{公共静态void main()

  • 问题内容: 应该返回什么?根据我的计算,应该是,但是解释器会返回。 这是Python的事情,还是我的数学很糟糕? 问题答案: 根据docs,其优先级高于,因此您的代码等同于。为了获得理想的结果,您可以将其放在括号中 或使用内置功能 或功能(返回值)

  • 我在重播脚本时出现以下错误。 尽管它不影响重放。需要了解相同的原因和修复方法。提前感谢!!

  • 我有以下代码(参考下文)以ASC顺序显示来自mysql的结果 但是我得到了一个错误:“警告:mysqli_fetch_array()期望参数1是mysqli_result,布尔值在”中给出,它指向第38行,第38行是“while($row=mysqli_fetch_array($result))” 正如您所看到的,我正试图按ASC顺序按键获取结果,键行包含0 1 2 3 4这样的数字,因此结果应按

  • 问题内容: 我在ubuntu上使用npm v1.0.104 / node 0.6.12-在尝试通过npm安装任何新模块时收到以下复制的错误(我之前使用http而不是https测试了socket.io,但我想知道是否可以导致npm / unsigned证书出现问题)。一旦npm尝试解析“ https://registry.npmjs.org ” URL,该错误就会弹出。无论如何,我可以忽略该错误,或