我正在创建一个计算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(不是数字)。
答案 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;
}