// Programma che implementa una lista, con eccezioni
class notfoundexception extends Exception {
}
class lista {
lista next; // Prossimo elemento della lista
int dato; // Dato di questo elemento
static lista base = null; // Primo elemento della lista
lista (int d) { // Costruttore
dato = d; // Inizializza il dato
next = base; // Prende la lista corrente e la mette dopo
base = this; // Quindi si 'installa' come nuovo inizio lista
}
lista cerca (int val) throws notfoundexception { // Cerca, se non trova lancia eccezione
if (val == dato) // Se il ndato corrisponde
return this; // Ha trovato, quindi ritorna 'se stesso'
else if (next != null) // Altrimenti se c'e' un prossimo
return next.cerca (val); // Continua con il prossimo
else
throw new notfoundexception (); // Altrimenti lancia la nuova eccezione
}
public static void main (String [] args) { // Programma principale
int i;
for (i = 5; i < 10; i++) // 5 ripetizioni
new lista (i); // 5 elementi di lista, con numeri da 5 a 9
try {
lista f = base.cerca (java.lang.Integer.parseInt (args [0])); // Cerca l'elemento chiesto dall'utente
System.out.print ("Trovato elemento con valore "); // Stampa l'elemento trovato
System.out.println (f.dato);
} catch (notfoundexception e) { // Se non c'era (eccezione)
System.out.println ("Non trovato alcun elemento"); // Stampa messaggio
} catch (java.lang.ArrayIndexOutOfBoundsException e) { // Se mancava il parametro (eccezione)
System.out.println ("Devi indicare il numero da cercare sulla linea di comando"); // Stampa messaggio
}
base = null; // Dereferenzia la radice, per elimenare la lista
}
}