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