// 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 } }