|
Tratto da: Ferdinando Sanpietro, Ornella Sanpietro - Java: il linguaggio e la tecnologia - TRAMONTANA Dati n reali inseriti dall'utente calcolarne la media import javax.swing.JOptionPane; public class Eccezioni0 { public static void main(String args[]) { String input; double v[]=new double[5]; input=JOptionPane.showInputDialog("Quanti elementi?"); int numElementi=Integer.parseInt(input); double media=0; for(int i=0; i < numElementi; i++) { input=JOptionPane.showInputDialog("v["+i+"]="); v[i]=Double.parseDouble(input); media+=v[i]; } media/=numElementi; JOptionPane.showMessageDialog(null, "Media="+media); } } Se numElementi > 5 si ha un accesso errato all'array v, catturiamolo! import javax.swing.JOptionPane; public class Eccezioni1 { 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 media=0; for(int i=0; i < numElementi; i++) { input=JOptionPane.showInputDialog("v["+i+"]="); v[i]=Double.parseDouble(input); media+=v[i]; } media/=numElementi; JOptionPane.showMessageDialog(null, "Media="+media); } catch(ArrayIndexOutOfBoundsException ex) { JOptionPane.showMessageDialog(null, "Numero elementi eccessivo"); } } } Se input non rappresenta effettivamente un numero reale si ha un numero malformato, catturiamolo! import javax.swing.JOptionPane; public class Eccezioni2 { 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 media=0; for(int i=0; i < numElementi; i++) { input=JOptionPane.showInputDialog("v["+i+"]="); v[i]=Double.parseDouble(input); media+=v[i]; } media/=numElementi; JOptionPane.showMessageDialog(null, "Media="+media); } catch(ArrayIndexOutOfBoundsException ex) { JOptionPane.showMessageDialog(null, "Numero elementi eccessivo"); } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Input errato"); } } } Se numElementi==0 si ha una divisione per zero che produce il risultato NaN, catturiamolo! import javax.swing.JOptionPane; public class Eccezioni3 { 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 media=0; for(int i=0; i < numElementi; i++) { input=JOptionPane.showInputDialog("v["+i+"]="); v[i]=Double.parseDouble(input); media+=v[i]; } if(numElementi==0) throw new ArithmeticException(); media/=numElementi; JOptionPane.showMessageDialog(null, "Media="+media); } catch(ArrayIndexOutOfBoundsException ex) { JOptionPane.showMessageDialog(null, "Numero elementi eccessivo"); } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Input errato"); } } } |
|