Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Application Stop when input editText more than 10 digit

Tags:

java

android

i am trying to show calculation textView(txtHasil) it is running but when input more than 10 application suddenly force close. this is my code:

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));
    }
}

i have been try change int,float, and double. i have been read this link: This program doesn't work properly for decimals more than 10 digits? but didn't help. any suggest will be help. thanks

like image 536
Steven Sugiarto Wijaya Avatar asked Jan 21 '26 19:01

Steven Sugiarto Wijaya


1 Answers

Integer.parseInt(plafond);

This is the problem.It can not parse anythong larger than Integer.MAX_VALUE

int edtPlafond;
try {

    edtPlafond = Integer.parseInt(plafond);

} catch (NumberFormatException e ) {
   e.printStackTrace(); 
   // add proper error handling
}

The best would be to have a longer value - long...

long edtPlafond;
try {

    edtPlafond = Long.parseLong(plafond);

} catch (NumberFormatException e ) {
   e.printStackTrace();
   // add proper error handling
}

And an example of handling the error in a better way, by displaying the error in a dialog:

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

Note: all conversions need such a treatment...

like image 164
ppeterka Avatar answered Jan 23 '26 07:01

ppeterka