不幸的是,我的应用已停止

时间:2015-11-02 13:27:36

标签: java android

这是我的代码

    button.setOnClickListener(new OnClickListener() {
       @Override
        public void onClick(View v) {  
            try {
                if (myswitch.isChecked()) {
                    editText.setHint("IDR");
                    editText1.setHint("USD");
                    double Rupiah = Double.valueOf(editText.getText().toString());


                    double convusd = Rupiah / 13698;

                    DecimalFormat dformat = new DecimalFormat("####,###,###.00");


                    editText1.setText(String.format("$" + dformat.format(convusd)));
                } else {
                    editText.setHint("USD");
                    editText1.setHint("IDR");
                    double USD = Double.valueOf(editText.getText().toString());


                    double convidr = USD * 13698;
                    DecimalFormat dformat = new DecimalFormat("####,###,###.00");


                    editText1.setText(String.valueOf("Rp." + dformat.format(convidr)));
                }


            } catch (IOException e) {
                System.err.println("Caught IOException: " + e.getMessage());
            }
        }

    });`

如果按下按钮时EditText为空,我的应用程序会出错。

4 个答案:

答案 0 :(得分:0)

更改代码如下所示

       String a=editText.getText().toString();     
       if(a!=null&&!a.isEmpty())
         {
                double Rupiah = Double.valueOf(a);
         }

答案 1 :(得分:0)

添加空检查单击按钮时。您可能正在尝试将空字符串转换为double

if(!editText.getText().toString().isEmpty){
double Rupiah = Double.valueOf(editText.getText().toString());
...
}

答案 2 :(得分:0)

您的代码存在一些问题:

  1. 为什么在点击后设置提示并在同一事件中尝试转换为值?用户是否应该首先看到提示,输入值,然后才转换输入?

  2. 当您尝试转换输入时,应检查内部是否存在实际值,例如:

    String inputVal = editText.getText();     
    
    if(inputVal != null && !inputVal.isEmpty())
    {
       //do some stuff
    }
    
  3. 如果有值,请确保它符合您的预期。 将输入类型设置为EditText:

    android:inputType="numberDecimal"
    

    并且要确保你应该做这样的事情:

    double d;
    try {
         d = Double.parseDouble(inputVal);
        }
    catch (NumberFormatException e) {
      // The input is not what you thought it was, handle it
    }
    

答案 3 :(得分:0)

button.setOnClickListener(new OnClickListener() { 
       @Override 
        public void onClick(View v) {  
            try { 
                if (myswitch.isChecked()) { 
                    editText.setHint("IDR"); 
                    editText1.setHint("USD"); 
                    double Rupiah = Double.valueOf(editText.getText() ==null ? "":editText.getText().toString());


                    double convusd = Rupiah / 13698;

                    DecimalFormat dformat = new DecimalFormat("####,###,###.00");


                    editText1.setText(String.format("$" + dformat.format(convusd)));
                } else { 
                    editText.setHint("USD"); 
                    editText1.setHint("IDR"); 
                    double USD = Double.valueOf(editText.getText() ==null ? "":editText.getText().toString());


                    double convidr = USD * 13698;
                    DecimalFormat dformat = new DecimalFormat("####,###,###.00");


                    editText1.setText(String.valueOf("Rp." + dformat.format(convidr)));
                } 


            } catch (IOException e) {
                System.err.println("Caught IOException: " + e.getMessage());
            } 
        } 

    });`