没有任何东西而不是NaN

时间:2018-04-06 13:42:26

标签: java android

我正在创建一个计算BMI的简单应用,而我正在努力解决一个小问题。我有2个编辑文本字段,只允许输入数字。关键是当其中一个文本字段为空时,应用程序将生成一个Toast消息并且不显示任何内容。我写了一个if语句来检查编辑文本是否为空,如果不是只是进一步计算。 一切都会正常工作,但我需要把return语句和Android Studio建议我写'&34;返回0;"我也是。 这是负责计算的代码:

/// parse input value from edittext field into double type
private double weight() {
    EditText weightInput = (EditText) findViewById(R.id.weight_input);
    String sWeightInput = weightInput.getEditableText().toString();
    if (sWeightInput.matches("")){
        Toast.makeText(this, R.string.noweight, Toast.LENGTH_SHORT).show();
    } else {
        String weight = sWeightInput;
        double weightTyped = Double.parseDouble(weight);
        return  weightTyped;
    }
     return 0;
}

private double heigh() {
    EditText heightInput = (EditText) findViewById(R.id.height_input);
    String sHightInput = heightInput.getEditableText().toString();
    if (sHightInput.matches("")){
        Toast.makeText(this, R.string.noheight, Toast.LENGTH_SHORT).show();
    } else {
        String height = sHightInput;
        double heightTyped = Double.parseDouble(height);
        heightTyped = heightTyped / 100;
        heightTyped = heightTyped * heightTyped;
        return heightTyped;
    }
    return 0;
}

//make calculations and return the output value
public void makeCalculations(View view){
    double result = weight() / heigh();
    String message = String.valueOf(result);
    TextView bmiSummaryTextView = (TextView) findViewById(R.id.bmi_calculation);
    bmiSummaryTextView.setText(message);
}

This is the interface of the app.

总而言之,我想做的就是不显示任何内容而不是NaN(不是数字)。

2 个答案:

答案 0 :(得分:1)

返回非原始Double而不是double,您将能够使用null作为值。请务必检查此值,否则您将遇到NullPointerException

或者,您可以考虑使用选项,但由于您使用的是Android,因此您可能需要一个外部库(除非您的最低SDK版本足够高,然后您可以使用Java 8的可选项。)

答案 1 :(得分:0)

问题可能是在你的计算中if(count < 10 ){ alert('less than 10 characters'); } 高度为0时输出NaN,因为它是无穷大。

还要将weight() / height置于return 0;之后。因为你没有在Toast.makeText()分支中返回一个值,所以AS抱怨。

if

也许这也可以帮助你避免除以零。

if (sHightInput.matches("")){
    Toast.makeText(this, R.string.noheight, Toast.LENGTH_SHORT).show();
    return 0;
}