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