Risolvere i problemi elencati sotto NELL'ORDINE IN CUI SONO ELENCATI. Non si richiede di scrivere TUTTI i programmi, ma quelli risolti devono compilare correttamente e produrre i risultati richiesti. Alla fine dell'esercitazione, copiare tutti i file prodotti in una cartella identificata dai cognomi dei componenti del gruppo, sotto serverPu/Esercizi/Lez2003. Siete invitati a completare (alcuni de)gli esercizi
fuori dall'orario di esercitazione, soprattutto se avete trovato serie
difficoltà a svolgerli. Potete mandare l'eventuale completamento
all'indirizzo guerrini@disi.unige.it.
|
Esercizio 1
Provare a compilare ed eseguire i seguenti programmi:
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 LeggiReali che
crea un array di double di dimensione 5, e successivamente chiede all'utente
5 numeri reali leggendoli con il metodo readDouble()
della classe ConsoleReader
e li inserisce nell'array. Infine stampa il contenuto dell'array.
Si noti che se l'utente non scrive un numero
(ad esempio, se scrive "34bc")
allora il metodo readDouble()
genera un'eccezione.
Il programma deve essere modificato in modo da catturare
l'eccezione generata in questi casi, e chiedere nuovamente il numero all'utente
se l'input era sbagliato.
Esercizio 4
Scrivere un programma ContaVittorie
che riceve in input una serie di risultati di partite calcistiche, nel formato
cc-pp (dove cc e' un numero di due cifre che corrisponde al numero di goal della
squadra di casa e pp e' un nunero di due cifre che corrisponde al numero di goal della squadra in
trasferta) e conta il numero di partite in cui ha vinto la squadra che giocava in casa.
Per fare questo, il programma estrae i primi due caratteri dalla stringa
(che rappresenta il risultato) letta in input e li confronta con gli ultimi due caratteri di tale
stringa.
Il programma deve catturare le eccezioni generate nel caso di input con formato non valido,
visualizzando un opportuno messaggio.
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.