当输入editText超过10位时,应用程序停止

时间:2016-08-09 09:34:59

标签: java android

我正在尝试显示计算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?但没有帮助。任何建议都会有所帮助。感谢

1 个答案:

答案 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();
}

注意:所有转换都需要这样的处理......