Esercitazione #4

Istruzioni

In questa esercitazione, si utilizzeranno tipi numerici, caratteri, booleani, oggetti String e semplici comandi condizionali (if-else).

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


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.

  • Creare nella propria home la directory ProgJava11/ES04, in cui metteremo tutti i nostri file java.
    Ricordarsi di importare il file Input.java all'interno della cartella ES-04.
  • [1]  Scrivere un programma MultiploDi che legge due interi m e d e determina se m è multiplo di d, usando il comando if e l'operatore modulo  %.

    Esempi di interazione con il programma (in blu l'input dell'utente):

  • Dammi l'intero m: 32
    Dammi l'intero d: 7
    Il numero 32 non e' multiplo di 7.
    
    Dammi l'intero m: 42 Dammi l'intero d: 7 Il numero 42 e' multiplo di 7.

  • [2]  Si scriva un programma Alfabetico che legge un carattere dall'input e controlla se tale carattere è un carattere alfabetico (a...z A...Z) stampando un opportuno messaggio sia in caso affermativo che negativo.
    Si sfrutti il fatto che le lettere dell'alfabeto hanno codici consecutivi in UNICODE, e che con i caratteri si possono usare gli operatori di confronto, come se fossero numeri.
  • [3]  Si scriva un programma Maggiore3Valori che legge tre valori interi e stampa il più grande di questi.
    Esempi di interazione con il programma (in blu l'input dell'utente):
  • Dammi un intero: 2
    Dammi un intero: 3
    Dammi un intero: 1
    3
    
    Dammi un intero: 100 Dammi un intero: 200 Dammi un intero: 150 200
    Dammi un intero: 2 Dammi un intero: 4 Dammi un intero: 8 8

  • [4]  Si scriva un programma Ordina3Valori che legge tre valori interi e li ristampa su una singola linea in ordine crescente.
    Esempi di interazione con il programma (in blu l'input dell'utente):
  • Dammi un intero: 2
    Dammi un intero: 3
    Dammi un intero: 1
    1 2 3
    
    Dammi un intero: 100 Dammi un intero: 200 Dammi un intero: 150 100 150 200
    Dammi un intero: 2 Dammi un intero: 4 Dammi un intero: 8 2 4 8

  • [5]  Un anno bisestile è identificato da un intero maggiore di 1584 che sia divisibile per 4 ma non per 100 oppure che sia divisibile per 400.

    Scrivere un programma Bisestile che:

    • chiede all'utente di immettere un anno;
    • legge l'anno;
    • controlla se l'anno è bisestile usando un solo comando if e stampa l'esito del controllo.
    Attenzione: usare le parentesi per disambiguare l'espressione booleana del comando if.

    Esempi di interazione con il programma (in blu l'input dell'utente):

    Immetti un anno (un intero): 2100
    L'anno 2100 non e' bisestile
    
    Immetti un anno (un intero): 2104 L'anno 2104 e' bisestile
  • [6] Si scriva un programma ChangeCase che legge un carattere e: se tale carattere è un carattere alfabetico minuscolo lo converta in maiuscolo e lo stampi; se viceversa è un carattere alfabetico maiuscolo lo converta in minuscolo e lo stampi; se non è un carattere alfabetico stampi il carattere '?'
  • [7]  Scrivere un programma IgnoreCase che legga due stringhe dall'input e segnali in output se sono perfettamente uguali o se sono uguali ignorando differenze tra minuscole e maiuscole.
    Suggerimento: Si consulti la documentazione della classe String per trovare uno o più metodi che permettono di risolvere l'esercizio.

    Esempi di interazione con il programma (in blu l'input dell'utente):

  • 
    Immetti una stringa: Topolino
    Immetti un'altra stringa: Topolino
    Le stringhe Topolino e Topolino sono uguali.
    
    Immetti una stringa: Topolino Immetti un'altra stringa: toPoLINO Le stringhe Topolino e toPoLINO sono (quasi) uguali.
    Immetti una stringa: Topolino Immetti un'altra stringa: Topolina Le stringhe Topolino e Topolina sono diverse.

  • [8] Il metodo s1.indexOf(s2) della classe String restituisce la posizione della prima occorrenza (a partire da sinistra) della stringa s2 all'interno della stringa s1 (il risultato è di tipo int). Ad esempio, "Esercizio".indexOf("zio") restituisce 6. Se s2 non è una sottostringa di s1, allora s1.indexOf(s2) restituisce il valore -1.
    Scrivere un programma ControllaSottoStringhe che:
    • chiede all'utente di immettere due stringhe e le legge,
    • in entrambe converte le maiuscole in minuscole con il metodo toLowerCase() della classe String
    • e verifica se una delle due stringhe è una sottostringa dell'altra, stampando un opportuno messaggio per illustrare l'esito del confronto.
  • [9] Scrivere un programma SottoStringa che:
    • legge una stringa s,
    • genera due numeri casuali i e j compresi tra 0 e l'ultima posizione della stringa s (estremi inclusi),
    • stampa i valori di i, di j e della lunghezza della stringa
    • e infine stampa la sottostringa di s che inizia in posizione i e termina in posizione j (incluse) usando il metodo substring visto a lezione.
    Attenzione: cosa succede se j < i? Si modifichi il programma in modo da evitare questa situazione.
     
    Per la generazione di numeri casuali, si usi il metodo Math.random(), che restituisce un numero decimale casuale compreso tra 0 (incluso) e 1 (escluso). Il numero così generato può essere trasformato opportunamente. Ad esempio, per assegnare alla variabile intera numeroCasuale un numero casuale intero compreso tra m e n (inclusi), si può utilizzare l'istruzione
    int numeroCasuale=(int)(Math.random()*(n-m+1))+m;

    Esempio di interazione con il programma (in blu l'input dell'utente):

    Scrivi una frase: l'appetito vien mangiando
    i = 7
    j = 15
    s.length() = 25
    Ho estratto : ->ito vien <-
    
    Scrivi una frase: il mattino ha l'oro in bocca i = 4 j = 12 s.length() = 28 Ho estratto : ->attino ha<-