如果edittext留空

时间:2016-01-14 02:47:43

标签: java android

所以我在先前的帖子中尝试了一些方法来解决这个问题但是它们似乎都不适用于我(毫无疑问是用户错误)。

如果将edittext留空,我的计算按钮基本上会崩溃。我需要做的是,如果它留空,则edittext的值为0.

这是我的java:

public class kCals extends AppCompatActivity {
EditText firstNumber;
EditText secondNumber;
EditText thirdNumber;
TextView addResult;
Button btnAdd;
double num1,num2,num3,sum;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_k_cals);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    {
    firstNumber = (EditText)findViewById(R.id.txtNumber1);
    secondNumber = (EditText)findViewById(R.id.txtNumber2);
    thirdNumber = (EditText) findViewById(R.id.txtNumber3);
    addResult = (TextView)findViewById(R.id.txtResult);
    btnAdd = (Button)findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(new View.OnClickListener()

    {public void onClick(View v) {
            num1 = Double.parseDouble(firstNumber.getText().toString());
            num2 = Double.parseDouble(secondNumber.getText().toString());
            num3 = Double.parseDouble(thirdNumber.getText().toString());
            sum = (num1 * 4) + (num2 * 4) + (num3 * 9);
            addResult.setText(String.format("%.2f", sum));}
        });

   }}}

如果有人可以帮助解决这个问题,那就太棒了。 干杯, 杰斯。

5 个答案:

答案 0 :(得分:1)

最好有一种方法为您执行此操作,如下所示。

public double parseDouble(String doubleText) {
    if(TextUtils.isEmpty(doubleText)) {
        return 0;
    }

    try {
        return Double.parseDouble(doubleText);
    } catch(NumberFormatException e) {
        // do something if invalid number maybe also return 0?
        return 0;
    }
}

然后您的代码变为

num1 = parseDouble(firstNumber.getText().toString());
num2 = parseDouble(secondNumber.getText().toString());
num3 = parseDouble(thirdNumber.getText().toString());

如果您愿意,还可以更新方法以传递EditText个对象,以避免所有getText().toString()次调用。

答案 1 :(得分:0)

在解析之前如何进行检查。

if(firstNumber.getText().toString() != ""){
    num1 = Double.parseDouble(firstNumber.getText().toString());
}
else{
    num1 = 0;
}

请注意,如果您允许EditText中的数字以外的条目,这仍将输出异常。

答案 2 :(得分:0)

您应该尝试使用函数来检查文本。例如:

double getValue(Editable text){
   if (text == null || text.length() == 0){
     return 0;
} else {
   return Double.parseDouble(text.toString());
}
}

并称之为:

num1 = getValue(firstNumber.getText());

答案 3 :(得分:0)

这是非常基本的。将String解析为Double可能会出现一些意外情况,因此try-catch是您解决此问题的最佳选择。

答案 4 :(得分:0)

检查您的edittext值长度 String s = edittext.gettext()。toString(); 如果(s.length()!= 0)     你的东西