这是我的代码
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为空,我的应用程序会出错。
答案 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)
您的代码存在一些问题:
为什么在点击后设置提示并在同一事件中尝试转换为值?用户是否应该首先看到提示,输入值,然后才转换输入?
当您尝试转换输入时,应检查内部是否存在实际值,例如:
String inputVal = editText.getText();
if(inputVal != null && !inputVal.isEmpty())
{
//do some stuff
}
如果有值,请确保它符合您的预期。 将输入类型设置为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());
}
}
});`