Esercitazione #5

Istruzioni

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".