Esercizio 1
Provare a compilare ed eseguire i seguenti programmi:
Dopo aver esaminato attentamente il tipo di eccezione generato, correggere i programmi in modo da catturare le eccezioni generate ed assicurare che l'esecuzione prosegua. Quando una eccezione è stata catturata, i programmi devono stampare il seguente messaggio: "Eccezione catturata!!!".Soluzioni: OutOfBoundsE.java , DivideByZeroE.java , NullPointerE.java , ClassCastE.java
Esercizio 2
Provare a compilare ed eseguire il seguente programma (scaricando anche le classi Circle e Point) :
public class EsEccezioni{
// Chiede un intero all'utente: // se il numero e' pari crea e stampa un Point // se il numero e' dispari crea e stampa un Circle public static void main (String [] args){ Point p; ConsoleReader console = new ConsoleReader(System.in); System.out.print("Scrivi un numero intero: "); int input = console.readInt(); if (input%2 == 0) p = new Point(7,5); else p = new Circle(7, 5, 32); //***************************************************** if (!(p instanceof Circle)){ System.out.print("\nHo costruito il punto: "); System.out.println(p+"\n"); }else{ double area = ((Circle) p).area(); System.out.println("Ho costruito il seguente cerchio: "); System.out.println(p); System.out.print("avente area: "); System.out.println(area+"\n"); } } } |
Modificare la classe EsEccezioni in modo che
Esercizio 3
Scrivere il programma LeggiInteri che
crea un array di interi di dimensione 5, e successivamente chiede all'utente
5 interi leggendoli con il metodo readInt() della classe ConsoleReader
e li inserisce nell'array. Infine stampa il contenuto dell'array.
Si noti che se l'utente non scrive un numero intero
(ad esempio, se scrive "3.0" oppure "34bc")
allora il metodo readInt()
genera un'eccezione.
Il programma deve essere modificato in modo da catturare
l'eccezione generata in questi casi, e chiedere nuovamente l'intero all'utente
se l'input era sbagliato.
Esercizio 4
Scrivere un programma ContaDate
che riceve in input una serie di date, nel formato gg.mm.aaaa e conta il numero di date in cui l'anno è maggiore o uguale a 1999. Per fare questo, il programma estrae gli ultimi quattro caratteri dalla stringa (che rappresenta la data) letta in input.
Il programma deve catturare le eccezione generate nel caso di input con formato non valido. A seconda dell'eccezione sollevata, deve essere visualizzato un messaggio piuttosto che un altro. In ogni caso, poiché l'eccezione sollevata è stata gestita, l'esecuzione deve proseguire normalmente.
Esercizio 5
La classe ConsoleReader
lancia un'eccezione nei metodi
readInt() e readDouble() se il dato fornito in
input dall'utente non ha un formato corretto. Si chiede di scrivere una classe
chiamata SafeConsoleReader che offre
esattamente gli stessi metodi di ConsoleReader, ma in modo
tale che non venga mai lanciata un'eccezione: se il dato in input non è
corretto, il metodo richiede il dato all'utente fin quando necessario. Nella
scrittura della nuova classe si chiede di sfruttare al meglio la classe
ConsoleReader esistente.
Si scriva un programmino per testare la classe
SafeConsoleReader. Se funziona correttamente, si consiglia di usare in futuro
questa classe al posto di ConsoleReader in tutti i
programmi che fanno input da tastiera.
Soluzioni: SafeConsoleReader.java , SafeTest.java