使用EditText的Android数字格式异常

时间:2011-02-26 22:42:25

标签: android if-statement floating-point android-edittext numberformatexception

我有一个简单的过程

简单地说,用户在EditText中输入一个数字,选择单选按钮然后按下计算。单选按钮连接到if语句,而if语句又指向返回的浮点数,替换EditText中显示的数字。但是,如果在输入任何数字之前按下计算按钮,则会出现数字格式异常,从而导致应用程序崩溃。

现在我将在EditText中输入一个默认值以减少发生这种情况的可能性,但我想知道是否有办法使用像if语句或类似的东西一起避免异常

这是一些示例代码

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;

import com.admob.android.ads.AdManager;
import com.admob.android.ads.AdView;
import com.medialets.android.analytics.MMAnalyticsManager;

public class Area extends Activity {
    private EditText text9;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.area);
            text9 = (EditText)findViewById(R.id.EditText09);

    public void myClickHandler09(View view){
switch (view.getId()) {
case R.id.Button09:
    RadioButton SeveralRadioButtons = (RadioButton) findViewById (R.id.RadioButton901);
    float inputValue = Float.parseFloat(text9.getText().toString());
    String checkValue = String.valueOf(inputValue);

    if (checkValue.equals("")){
        text9.setText(String.valueOf(""));
   } else {

     if (SeveralRadioButtons.isChecked())  {
            text9.setText(String
                    .valueOf(conversionfactor(inputValue)));
   }
       break;
}}}

private double conversionfactor(float f){
        return f * 6.4516;
    }

其中      (SeveralRadioButtons) 实际上有几个单选按钮,每个单独的if语句和私有双重

正如您所看到的,我已经尝试解决问题,但仍会出现数字格式异常。

3 个答案:

答案 0 :(得分:0)

在你的转换检查周围放置一个if语句(第一个!)或一个空字符串。默认值有效,直到人们在文本框中放置一个空字符串。

答案 1 :(得分:0)

在你的按钮的onClickListener中,你可以编写一个if语句来检查字符串是否为空或“”,然后才能将数字实际发送到你发送它的地方......

答案 2 :(得分:0)

除了遵循检查null""值的其他建议之外,您还可以捕获NumberFormatException并处理错误案例。您可以中止计算并显示错误消息。

如果抛出异常,则处理异常意味着如果您遗漏了其他边缘情况,则您的用户将不会遇到完整的应用程序崩溃。