ESERCIZI

Esercizio 1

Scrivere un programma CharLineCount che chieda all'utente il nome di un file e che stampi il numero di caratteri e di righe di quel file. Poi il programma chiederà il nome del file successivo. Quando l'utente inserirà un file che non esiste (come per esempio una stringa vuota), il programma terminerà l'esecuzione.


Esercizio 2

Scrivere un programma CatFiles che concateni i contenuti di diversi file in un solo file. Per esempio,

java CatFiles cap1.txt cap2.txt cap3.txt libro.txt
crea un file libro.txt che conterrà i contenuti dei file cap1.txt, cap2.txt e cap3.txt. Il numero di argomenti della linea di comando (4 nell'esempio) è arbitrario: l'ultimo argomento è sempre il nome del file da creare. Se il programma viene invocato con meno di un argomento, deve essere segnalato un errore all'utente.
Attenzione: la gestione degli argomenti della linea di comando è spiegata qui (e il programma dovra' essere eseguito da linea di comando -prompt DOS- e non attraverso JCreator)

Esercizio 3

Scrivere un programma FrequenzaLettere che chieda all'utente il nome di un file di testo, e che calcoli per ogni lettera dell'alfabeto inglese la frequenza con cui essa compare nel file. Il programma deve scrivere in un file (il cui nome è ottenuto aggiungendo al nome del file di input il prefisso "FL-") le percentuali calcolate, scrivendo in ogni riga una lettera e la corrispondente percentuale. Si ignorino i caratteri che non sono lettere dell'alfabeto, e si ignori la differenza tra maiuscole e minuscole.


Esercizio 4

Scrivere una classe SumCollection con un metodo statico sum che restituisce la somma di tutti gli elementi di una Collection passata per argomento, assumendo che siano di tipo Integer, e ne stampa il risultato. Provare il metodo con un semplice programma che chiede all'utente una sequenza di interi, li inserisce in un Vector e invoca il metodo.


Esercizio 5

Definire una sottoclasse di Vector chiamata DoubleVector per gestire vettori i cui elementi sono di tipo Double. La classe deve ridefinire almeno i metodi add(Object) e insertElementAt(Object,int) in modo da accettare solo istanze di Double (altrimenti viene lanciata un'opportuna eccezione). Inotre devono essere forniti i (nuovi) metodi per inserire un double, add(double), insertElementAt(double,int), e il metodo per leggere un elemento doubleElementAt(int) di tipo double. [Si ricordi che double è un tipo primitivo, mentre Double è un tipo contenitore o wrapper].
ATTENZIONE: la classe DoubleVector deve usare in modo estensivo i metodi della superclasse Vector.

Si testi la classe compilando e eseguendo il programma UseDoubleVector; l'output dovrebbe essere il seguente.

> java UseDoubleVector
Bene, ho rilevato un'eccezione inserendo una stringa...
Contenuto del DoubleVector
1.4142135623730951 3.1415926535897931 7.0 3.5