Prova di autovalutazione 9:
Stringhe

Questa prova di valutazione consiste nella scrittura di alcuni metodi Java per la gestione di stringhe.

Lo scopo di questa prova di valutazione è di verificare la capacità di scrivere metodi, e in particolare di tipo iterativo, in grado di gestire stringhe, ovvero sequenze di caratteri. Viene inoltre verificata la capacità di comprendere la documentazione delle API di Java.

Nella scrittura dei diversi metodi, è permesso di utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché l'operatore + di concatenazione.  

Nella parte finale del modulo è possibile scrivere eventuali problemi che sono stati riscontrati nello svolgimento di questa prova.


Esercizio 1: Prefisso.

Definire una classe Prefisso che definisce il metodo di classe boolean startsWith(String s, String t) che, date le stringhe non nulle s e t, verifica se la stringa t è un prefisso della stringa s, ovvero se i caratteri iniziali della stringa s coincidono (ordinatamente) con i caratteri della stringa t.

In pratica, il metodo deve restituire sempre lo stesso valore dell'espressione s.startsWith(t) (si veda la documentazione del metodo startsWith della classe String del package java.lang).

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione. 

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

ststartsWith(s,t)
automobile autotrue
autoautomobilefalse
automobilemacchinafalse
abcdefghcdeffalse


Esercizio 2: Suffisso.

Definire una classe Suffisso che definisce il metodo di classe boolean endsWith(String s, String t) che, date le stringhe non nulle s e t, verifica se la stringa t è un suffisso della stringa s, ovvero se i caratteri finali della stringa s coincidono (ordinatamente) con i caratteri della stringa t.

In pratica, il metodo deve restituire sempre lo stesso valore dell'espressione s.endsWith(t) (si veda la documentazione del metodo endsWith della classe String del package java.lang).

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione. 

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

stendsWith(s,t)
automobilemobiletrue
mobileautomobilefalse
automobilemacchinafalse
abcdefghcdeffalse


Esercizio 3: Trim.

Definire una classe Trim che definisce il metodo di classe String trim(String s) che, data una stringa s, restituisce la stessa stringa a cui sono stati tolti tutti gli spazi presenti all'inizio e alla fine della stringa.

In pratica il metodo deve restituire sempre lo stesso valore dell'espressione s.trim() (si veda la documentazione del metodo trim della classe String del package java.lang).

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione.

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

strim(s)
"" ""
"   " ""
"abc" "abc"
"abc  " "abc"
"   abc" "abc"
"  abc " "abc"
"  a c  "   "a c"


Esercizio 4: Replace.

Definire una classe Replace che definisce il metodo di classe String replace(String s, char oldChar, char newChar) che, data una stringa s, restituisce una stringa costruita copiando ogni carattere di s, ma sostituendo il carattere newChar ogni volta che viene incontrato il carattere oldChar.

In pratica il metodo deve restituire sempre lo stesso valore dell'espressione s.replace(oldChar, newChar) (si veda la documentazione del metodo replace della classe String del package java.lang).

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione.

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

 s  oldChar  newChar  replace(s, oldChar, newChar) 
 ""   'x'   'y'   "" 
 "casa"   'a'   'o'   "coso" 
 "casa"   'o'   'i'   "casa" 


Esercizio 5: Palindroma.

Definire una classe Palindroma che definisce un metodo di classe boolean palindroma(String s) che, data una stringa s, verifica che la stringa sia palindroma.

Una stringa è palindroma se può essere scandita indifferentemente da destra o da sinistra, ovvero se il primo carattere è uguale all'ultimo, il secondo uguale al penultimo e così via.

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione.

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

spalindroma(s)
""true
"a"true
"aa"true
"aba"true
"anna"true
"radar"true
"esose"true
"sator arepo tenet opera rotas"true
"ab"false
"estate"false
"arte tetra"false


Esercizio 6: Anagramma.

Definire una classe Anagramma che definisce un metodo di classe boolean anagramma(String s, String t) che, date due stringhe s e t, verifica che la stringa t sia un anagramma della stringa s.

Una stringa s è un anagramma di un'altra stringa t se ogni carattere di s appare anche in t esattamente lo stesso numero di volte e in t non sono presenti altri caratteri.

Nella scrittura del metodo, si possono utilizzare della classe String esclusivamente i metodi int length() e char charAt(int index), nonché (se necessario) l'operatore + di concatenazione.

Completare la definizione della classe con la definizione di un metodo di test per verificare la correttezza della soluzione proposta.

Esempi:

s t anagramma(s, t)
"vello" "volle" true
"ceppo" "coppe" true
"pane latte" "la patente" true
"pagamenti" "impegnata" true
"tosse" "sesto" true
"trota" "torta" true
"sposata" "passato" true
"risultati" "altruisti" true
"nascita" "castani" true
"sperato" "superato" false
"cavalli" "cavilli" false
"scoglio" "scaglia" false
"accanto" "acanto" false
"sprecati" "pertica" false


Difficoltà e problemi

Riporta nella seguente casella di testo eventuali difficoltà e problemi riscontrati nello svolgimento di questa prova di autovalutazione.


Invio della soluzione proposta

Scrivi chi sei nei seguenti campi

Cognome
Nome

Premi Invia messaggio per inviare il messaggio, oppure Cancella per cancellare il contenuto del modulo.

Qualche secondo dopo aver premuto Invia messaggio, ti apparirà una pagina che riporta il testo del messaggio inviato.