Gestione delle eccezioni

  1. Realizzare una classe TemporaryFileName che ha come unica variabile di istanza una stringa prefix, il cui valore viene passato al costruttore. La classe deve implementare inoltre un metodo public String getName() che, una volta invocato, determina e restituisce il nome di un file NON esistente nella directory corrente che inizi con il contenuto della variabile prefix. Per determinare tale nome basta: Verificare il corretto funzionamento della codice (istanziando TemporaryFileName sia in modo che il prefisso corrisponda a un file esistente, sia che non corrisponda ad alcun file esistente nella directory in cui avete effettuato la compilazione e l'esecuzione.
  2. Scrivere un programma che legga da tastiera la descrizione di un'equazione di primo grado a coefficienti interi e stampi la sua (eventuale) soluzione intera, indicando altresì con opportuni messaggi i casi in cui l'equazione non ha una soluzione intera, non ha soluzioni e ha infinite soluzioni. Gestire tramite un'eccezione il caso in cui il coefficiente dell'incognita è nullo.
  3. Ripetere l'esercizio precedente per la soluzione delle equazioni di secondo grado, tenendo conto che in questo caso bisognerà creare un metodo che calcola la radice quadrata di un valore intero e la restituisce nel caso quest'ultima sia a sua volta intera, lanciando altrimenti un'eccezione (IllegalArgumentException va benone), nonché gestire sia il caso in cui il coefficiente del quadrato dell'incognita è nullo, sia il caso in cui le radici sono complesse.
  4. Leggere sulle API la documentazione della classe java.util.ArrayList, che rappresenta essenzialmente un array di cui è possibile modificare dinamicamente la dimensione. Leggere in particolare la descrizione dei metodi add, get e indexOf. Realizzare una classe ArrayListException che ha lo stesso funzionamento di un'ArrayList di interi relativamente ai metodi sopra menzionati, con l'unica differenza che indexOf emette un'eccezione DataNotFoundException (la cui classe dovrà essere creata) nel caso in cui venga cercato un elemento non esistente (suggerimento: utilizzare una variabile di istanza di tipo ArrayList<Integer> a cui delegare i vari metodi, controllando il valore restituito da indexOf al fine di lanciare, se necessario, l'eccezione).
  5. Realizzare una classe MediaInteriDaStringa che legge una stringa contenente una serie di interi separati da spazi (si può usare StringTokenizer per semplificare il codice) e stampa la media di questi valori. Nel caso in cui a un certo punto della scansione si trovi una parte della stringa che non è convertibile in valore intero il programma deve stampare la media dei valori letti fino a quel momento (suggerimento: usare Integer.parseInt per effettuare la conversione, sfruttando opportunamente le eccezioni).
  6. Scrivere un programma che, letta una stringa avente la forma <a> x + <b> = 0 determina la soluzione dell'equazione corrispondente e la stampa (dove <a> e <b> indicano due valori numerici, non necessariamente interi). Il programma deve lanciare un'opportuna eccezione (come per esempio IllegalArgumentException) nel caso in cui la stringa letta non rispetti il formato richiesto.
  7. Modificare il programma precedente in modo che accetti tutti i seguenti formati: <a> x + <b> = 0, <a> x - <b> = 0, <a> * x + <b> = 0 e <a> * x - <b> = 0, indipendentemente dal numero di spazi utilizzati per separare gli elementi della stringa.
  8. Tornando alla classe TemporaryFile, è sensato dichiarare la variabile di istanza usando il modificatore static? E il metodo getName()?