Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Eccezioni 2

Precedente
SUPERIORE
Successiva

Continuazione dell'esercizio: "Dati n reali inseriti dall'utente calcolarne la media"

import javax.swing.JOptionPane;

public class Eccezioni10
{
   public static void main(String args[])
   {
      String input;
      double v[]=new double[5];

      try
      { 
         input=JOptionPane.showInputDialog("Quanti elementi?");
         int numElementi=Integer.parseInt(input);

         double somma=0;
         for(int i=0; i < numElementi; i++)
         {
            input=JOptionPane.showInputDialog("v["+i+"]=");
            v[i]=Double.parseDouble(input);
            somma+=v[i];
         } 

         JOptionPane.showMessageDialog(null, "Media=" + dividi(somma, numElementi));
      }
      catch(ArrayIndexOutOfBoundsException ex)
      {
         JOptionPane.showMessageDialog(null, "Numero elementi eccessivo");
      } 
         catch(NumberFormatException ex)
      {
         JOptionPane.showMessageDialog(null, "Input errato");
      } 
   }
   public static double dividi(double x, double y)
   { 
      if(y==0)
         throw new ArithmeticException("Divisione per zero!");
      else
         return x/y; 
   }
}

Nel metodo dividi() potrebbe essere lanciata un'eccezione

throw new ArithmeticException();

oppure

throw new ArithmeticException("Divisione per zero!");

che provocherebbe l'interruzione dell'esecuzione, meglio delegare alla sua cattura il metodo chiamante

import javax.swing.JOptionPane;

public class Eccezioni11
{
   public static void main(String args[])
   {
      String input;
      double v[]=new double[5];

      try
      { 
         input=JOptionPane.showInputDialog("Quanti elementi?");
         int numElementi=Integer.parseInt(input);

         double somma=0;
         for(int i=0; i < numElementi; i++)
         {
            input=JOptionPane.showInputDialog("v["+i+"]=");
            v[i]=Double.parseDouble(input);
            somma+=v[i];
         } 

         JOptionPane.showMessageDialog(null, "Media="+dividi(somma, numElementi));
      }
      catch(ArrayIndexOutOfBoundsException ex)
      {
         JOptionPane.showMessageDialog(null, "Numero elementi eccessivo");
      } 
      catch(NumberFormatException ex)
      {
         JOptionPane.showMessageDialog(null, "Input errato");
      }
      catch(ArithmeticException ex)                                                      (3)
      {
         JOptionPane.showMessageDialog(null, "Attento: " + ex.getMessage());
      }
   }
   public static double dividi(double x, double y) throws ArithmeticException            (2)
   { 
      if(y==0)
         throw new ArithmeticException("Divisione per zero!");                           (1)
      else
         return x/y; 
   } 
}
  1. throw: lancia
  2. throws: rilancia al metodo chiamante
  3. catch: cattura

Eccezioni 2 - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva