【问题标题】:I get error if i use editText as Double如果我使用 editText 作为 Double,我会收到错误
【发布时间】:2024-05-21 06:45:02
【问题描述】:

如果我将editText 字段用作Double 值,则会出错:

public void Format1(View view) {
    DecimalFormat num = new DecimalFormat("000.00");

    EditText editText = (EditText)findViewById(R.id.editText_075_1);
    TextView textView = (TextView)findViewById(R.id.textView_075_1);

    //textView.setText(num.format(1.6789));// works

    textView.setText(num.format(Double.parseDouble(editText.toString()))); // error

【问题讨论】:

  • 能否请您分享确切的错误信息!
  • 引起:java.lang.NumberFormatException:无效双:“android.support.v7.widget.AppCompatEditText{8322571 VFED..CL..F...... 416,64-776,256 #7f1001f2 应用程序:id/editText_075_1}"
  • 你输入的文本是什么/

标签: string format double decimal


【解决方案1】:

这意味着,editText 不包含正确的双精度!所以最好在设置textView之前检查编辑文本是否是正确的数字格式!

boolean checkDouble(String val) {
    try {
        Double.parseDouble(val);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

并像使用它一样

if(checkDouble(editText.toString())){
    textView.setText(num.format(Double.parseDouble(val)));
}else{
    textView.setText("Please enter a valid double!");
}

希望这会有所帮助!

【讨论】:

  • 我得到“请输入一个有效的双精度!”这意味着此行的代码不正确: textView.setText(num.format(Double.parseDouble(val)));
  • 你的意见是什么!?
【解决方案2】:

问题已解决: 我们使用 Stream 而没有 String vergot (getText) :

editText.getText().toString()) // String : correct

editText.getText().toString()) // 流

【讨论】: