In questa esercitazione, si utilizzeranno le principali strutture di controllo di Java.
Prima della fine dell'esercitazione, inviare
tutti i file .java
prodotti (anche se incompleti) a rbruni@cli.di.unipi.it come attachment
di un messaggio di posta elettronica con Subject: ES-05.
Esercizi
Per gli esercizi che richiedono di leggere dei dati in input
da tastiera, scaricare la classe Input.java. Un
esempio di uso dei metodi di questa classe è
contenuto nella classe EuroInput.java.
|
-
[0]
Avviare Eclipse, creare un nuovo progetto chiamato ES-05 e
sviluppare al suo interno un'opportuna classe Java per ognuno dei seguenti esercizi.
Ricordarsi di importare il
file Input.java all'interno
del progetto ES-05.
- [1] Scrivere un programma Rimpiazza che legge una stringa e
due caratteri, e poi stampa la stringa in cui tutte le
occorrenze del primo carattere sono sostituite dal secondo. A
tal fine si utilizzi il metodo d'istanza replace della classe String.
Esempi di interazione con il programma (in blu l'input dell'utente):
java Rimpiazza
Dammi una stringa: La rana gracida in campagna
Carattere da rimpiazzare: a
Carattere con cui sostituirlo: e
Le rene grecide in cempegne |
[2] Scrivere un programma Calcolatrice che legge un valore di tipo
double, uno di tipo char e poi ancora uno di tipo
double e infine
usa il comando switch per
fare in modo che:
- se il carattere letto è '+' allora stampa la somma
dei due valori numerici;
- se il carattere è '*' allora stampa il prodotto
dei due valori numerici;
- se il carattere è '^' allora stampa la potenza
del primo valore elevato al secondo (usare un opportuno
metodo della classe Math);
- se è un altro carattere allora stampa il
primo valore.
Esempi di interazione con il programma (in blu l'input dell'utente):
java Calcolatrice
Primo valore (double): 12.5
Operazione: *
Secondo valore (double): 2
12.5 * 2.0 = 25.0
java Calcolatrice
Primo valore (double): 11.1
Operazione: ^
Secondo valore (double): 1.1
11.1 ^ 1.1 = 14.120669121494236 |
[3] Il metodo charAt(i) della classe String restituisce il
carattere di posizione i nella stringa sulla quale
viene invocato (il risultato è di tipo char).
Scrivere un programma UnCarattere che:
- chiede all'utente di immettere una stringa;
- sfrutta i metodi length() e charAt(...)
per ottenere l'ultimo carattere immesso dall'utente e poi:
- se il carattere è un punto interrogativo stampa il messaggio "Bella domanda, ma non so risponderti!"
- se il carattere è un punto esclamativo stampa il messaggio "Davvero? Incredibile!"
- altrimenti stampa il messaggio "Hai ragione."
[4] Si scriva un programma RettangoloPunto che crea un
rettangolo di coordinate (5,8) altezza 22 e
larghezza 13, poi legge le coordinate di un punto (valori interi)
(x,y) e dice se il punto è contenuto nel
rettangolo oppure no. Se non è contenuto allora sposta il
rettangolo alla locazione definita dalle coordinate lette SENZA
usare il metodo translate() e SENZA creare un
nuovo rettangolo.
Suggerimento: Si consulti la documentazione della classe
java.awt.Rectangle
per trovare uno o più metodi che permettono di risolvere
l'esercizio.
[5] Scrivere un programma RettangoliUguali che chieda
all'utente i dati per costruire un oggetto rettangolo,
r1 e crei il rettangolo
r2 con valori casuali,
usando l'istruzione
Rectangle r2 = new Rectangle( (int) (Math.random()*6),
(int) (Math.random()*6),
(int) (Math.random()*11),
(int) (Math.random()*11) );
(coordinate da 0 a 5 e dimensioni da 0 a 10).
Si verifichi poi se r1
e r2 rappresentano lo
stesso rettangolo stampando un opportuno messaggio assieme alla
descrizione di r2. Si
usi la classe predefinita
Rectangle del pacchetto java.awt
come nell'esempio
visto a lezione.
[6] Scrivere un programma LeggiData che chiede all'utente
di immettere una data nel formato gg-mm-aaaa (composta da sole
cifre e carattere '-'), legge la stringa immessa
dall'utente e verifica che sia una data corretta stampando un
opportuno messaggio:
- se la stringa immessa non è nel formato
richiesto viene segnalato un "Errore di
formato"
- se la stringa è nel formato richiesto ma non
corrisponde a una data corretta viene stampato il
messaggio "Data
sconosciuta"
- se la stringa corrisponde a una data reale si stampa
il nome del mese in formato testuale.
Nota: In prima istanza, nel controllo della correttezza della
data potete ignorare la differenza tra anni bisestili e non.
[7] Scrivere un programma Cifre4 che chiede all'utente un
numero intero di quattro cifre e, utilizzando la divisione intera
e l'operatore modulo, stampa le cifre che lo compongono
distanziandole di due spazi l'una dall'altra. Ad esempio, se
l'input è il numero 6295, il programma
stamperà
"6 2 9 5".
|