我正在尝试显示计算textView(txtHasil)它正在运行但是当输入超过10个应用程序时突然强行关闭。这是我的代码:
btnHitung.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//String plafond = NumberTextWatcherForThousand.trimCommaOfString(edtPlafond.getText().toString());
String plafond = edtPlafond.getText().toString().trim();
String jasa = edtJasa.getText().toString().trim();
int edtPlafond = Integer.parseInt(plafond);
float edtJasa = Float.parseFloat(jasa);
double hasil = (edtPlafond * edtJasa )/100;
txtHasil.setText(""+hasil+"\nplafond: "+edtPlafond+"\nJasa: "+edtJasa);
//txtHasil.addTextChangedListener(new NumberTextWatcherForThousand((EditText) txtHasil));
}
}
我一直尝试改变int,float和double。我已经阅读了这个链接:This program doesn't work properly for decimals more than 10 digits?但没有帮助。任何建议都会有所帮助。感谢
答案 0 :(得分:4)
Integer.parseInt(plafond);
这是问题。它无法解析大于Integer.MAX_VALUE
的任何大小int edtPlafond;
try {
edtPlafond = Integer.parseInt(plafond);
} catch (NumberFormatException e ) {
e.printStackTrace();
// add proper error handling
}
最好的是拥有更长的价值 - 长......
long edtPlafond;
try {
edtPlafond = Long.parseLong(plafond);
} catch (NumberFormatException e ) {
e.printStackTrace();
// add proper error handling
}
通过在对话框中显示错误,以更好的方式处理错误的示例:
} catch (NumberFormatException e ) {
new AlertDialog.Builder(getActivity())
.setTitle("Error: incorrect number entered!")
.setMessage("The exact error is: " + e.getMessage())
.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int b) {
dialog.cancel();
}
});
.create()
.show();
}
注意:所有转换都需要这样的处理......