ArithmeticException non catturatata

di il
2 risposte

ArithmeticException non catturatata

Ciao a tutti, questo è il mio prtimo post.
Un paio di giorni fa ho iniziato a studiare un manuale di android ed ho scritto una mini app giusto per testare ciò che ho appreso finora.
L'app prende in input 2 interi tramite 2 EditText, un operatore(+,-,*,/) tramite uno Spinner, un Button per eseguire il calcolo ed infine un TextView per mostrare il risultato.
Il problema si verifica quando cerco di dividere per 0, al posto di eseguire la divisione lancio una ArithmeticException e vorrei che fosse catturata e mostrasse un messaggio con un Toast avvertendo l 'utente che non è possibile dividere per 0, invece il programma termina bruscamente.
Ecco il codice:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        popolaSpinner();
        Button button = (Button) findViewById(R.id.buttonCalcola);
        try {
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v){
                    EditText editText1 = (EditText) findViewById(R.id.editText1);
                    int primoOpernado = Integer.parseInt(editText1.getText().toString());

                    Spinner spinner = (Spinner) findViewById(R.id.spinnerOperatori);
                    String operatore = spinner.getSelectedItem().toString();

                    EditText editText2 = (EditText) findViewById(R.id.editText2);
                    int secondoOpernado = Integer.parseInt(editText2.getText().toString());

                    Calcolatrice calcolatrice = new Calcolatrice();
                    int risultato = calcolatrice.calcola(primoOpernado, operatore, secondoOpernado);

                    TextView textView =(TextView) findViewById(R.id.textViewRisultato);
                    textView.setText(Integer.toString(risultato));

                }
            });
        }catch(ArithmeticException ex){
            Toast toast = Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT);
            toast.show();
        }
    }


e il metodo della classe Calcolatrice che lancia l'eccezione:

 public int calcola(int primoOperndo, String operatore, int secondoOperando){
        if(operatore.equals("+")){
            return primoOperndo+secondoOperando;
        }
        if(operatore.equals("-")){
            return primoOperndo-secondoOperando;
        }
        if(operatore.equals("*")){
            return primoOperndo*secondoOperando;
        }
        if(operatore.equals("/")){
            if (secondoOperando==0){
                throw new ArithmeticException("Non puoi dividere per 0!");
            }
            return primoOperndo/secondoOperando;
        }
        throw new IllegalArgumentException("Operatore non valido");

    }
Vi sarei grato se potreste darmi qualche dritta su come risolvere il problema

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte