×

Esercizi sulle eccezioni in Java

Questa sezione contiene i principali esercizi svolti a lezione, o assegnati per lo svolgimento a casa, o in laboratorio.
L'elenco sarà aggiornato sulla base delle esigenze didattiche e/o delle osservazioni/considerazioni che emergeranno durante l'interazione con gli allievi.

Nota:
Attenzione, la numerazione degli esercizi non è definitiva e può cambiare nel tempo, man mano che vengono inseriti nuovi esercizi, o riorganizzati quelli esistenti.
Fare riferimento al titolo per individuare, nel tempo, esercizi specifici.

1) Quoziente della divisione tra interi

Realizzare una applicazione Java che chieda all'utente di inserire due numeri interi, calcoli e stampi il quoziente intero della divisione tra i due numeri, qualora possibile.
Nel caso in cui il divisore sia nullo, l'applicazione deve intercettare l'eccezione e visualizzare un messaggio di errore del tipo "Impossibile calcolare il quoziente della divisione tra <dividendo> e <divisore>, il divisore è nullo!".

Esempio 1
Inserire il dividendo: 10
Inserire il divisore: 4
Output:
Il quoziente della divisione tra 10 e 4 è 2.

Esempio 2
Inserire il dividendo: 10
Inserire il divisore: 0
Output:
Impossibile calcolare il quoziente della divisione tra 10 e 0, il divisore è nullo!

2) Resto della divisione tra interi

Realizzare una applicazione Java che chieda all'utente di inserire due numeri interi, calcoli e stampi il resto intero della divisione tra i due numeri, qualora possibile.
Nel caso in cui il divisore sia nullo, l'applicazione deve intercettare l'eccezione e visualizzare un messaggio di errore del tipo "Impossibile calcolare il resto della divisione tra <dividendo> e <divisore>, il divisore è nullo!".

Esempio 1
Inserire il dividendo: 10
Inserire il divisore: 3
Output:
Il resto della divisione tra 10 e 3 è 1.

Esempio 2
Inserire il dividendo: 10
Inserire il divisore: 0
Output:
Impossibile calcolare il resto della divisione tra 10 e 0, il divisore è nullo!

3) Reciproco di un numero intero

Realizzare una applicazione Java che chieda all'utente di inserire un numero intero, calcoli e stampi il reciproco del valore inserito, qualora possibile.
Nel caso in cui il numero inserito sia nullo, l'applicazione deve intercettare l'eccezione e visualizzare un messaggio di errore del tipo "Impossibile calcolare il reciproco di 0!".

Esempio 1
Inserire un numero intero: 10
Output:
Il reciproco di 10 è 0.1.

Esempio 2
Inserire un numero intero: 0
Output:
Impossibile calcolare il reciproco di 0!

4) Quoziente della divisione tra interi con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire due numeri interi, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, il quoziente intero della divisione tra i due numeri, qualora possibile.
Nel caso in cui il divisore sia nullo, tale funzione deve sollevare una eccezione QuozienteInteroException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare il quoziente della divisione tra <dividendo> e 0, il divisore è nullo!"

Esempio 1
Inserire il dividendo: 10
Inserire il divisore: 3
Output:
Il quoziente della divisione tra 10 e 3 è 3.

Esempio 2
Inserire il dividendo: 10
Inserire il divisore: 0
Output:
Impossibile calcolare il quoziente della divisione tra 10 e 0, il divisore è nullo!

5) Resto della divisione tra interi con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire due numeri interi, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, il resto intero della divisione tra i due numeri, qualora possibile.
Nel caso in cui il divisore sia nullo, tale funzione deve sollevare una eccezione RestoInteroException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare il resto della divisione tra <dividendo> e 0, il divisore è nullo!"

Esempio 1
Inserire il dividendo: 10
Inserire il divisore: 3
Output:
Il quoziente della divisione tra 10 e 3 è 3.

Esempio 2
Inserire il dividendo: 10
Inserire il divisore: 0
Output:
Impossibile calcolare il quoziente della divisione tra 10 e 0, il divisore è nullo!

6) Reciproco di un numero intero con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire un numero intero, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, il reciproco del numero inserito, qualora possibile.
Nel caso in cui il valore inserito sia nullo, tale funzione deve sollevare una eccezione ReciprocoException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare il reciproco di 0!"

Esempio 1
Inserire un numero intero: 10
Output:
Il reciproco di 10 è 0.1.

Esempio 2
Inserire un numero intero: 0
Output:
Impossibile calcolare il reciproco di 0!

7) Radice quadrata di un numero con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire un numero, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, la radice quadrata del numero inserito, qualora possibile.
Nel caso in cui il valore inserito sia negativo, tale funzione deve sollevare una eccezione RadicandoNegativoException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare la radice quadrata di <radicando>, radicando negativo!"

Esempio 1
Inserire un numero intero: 16
Output:
La radice quadrata di 16 è 4.

Esempio 2
Inserire un numero intero: -25
Output:
Impossibile calcolare la radice quadrata di -25, radicando negativo!

8) Fattoriale di un numero con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire un numero, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, il fattoriale del numero inserito, qualora possibile.
Nel caso in cui il valore inserito sia negativo, tale funzione deve sollevare una eccezione ArgomentoNegativoException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare il fattoriale di <numero>, perché negativo!"

Esempio 1
Inserire un numero intero: 5
Output:
Il fattoriale di 5 è 120.

Esempio 2
Inserire un numero intero: -3
Output:
Impossibile calcolare il fattoriale -3, perché negativo!

Soluzione

9) Logaritmo naturale di un numero con nuova eccezione

Realizzare una applicazione Java che chieda all'utente di inserire un numero, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, il logaritmo naturale del numero inserito, qualora possibile.
Nel caso in cui il valore inserito sia negativo o nullo, tale funzione deve sollevare una eccezione ArgomentoNonValidoException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "Impossibile calcolare il logaritmo naturale di <numero>, perché negativo!" o "Impossibile calcolare il logaritmo naturale di <numero>, perché nullo!", a seconda del valore numerico inserito dall'utente.

Esempio 1
Inserire un numero intero: 1
Output:
Il logaritmo naturale di 1 è 0.

Esempio 2
Inserire un numero intero: -3
Output:
Impossibile calcolare il logaritmo naturale di -3, perché negativo!

Esempio 3
Inserire un numero intero: 0
Output:
Impossibile calcolare il logaritmo naturale di 0, perché nullo!

10) Giorno della settimana di una data in input

Realizzare una applicazione Java che chieda all'utente di inserire tre numeri interi rappresentanti il giorno, il mese e l'anno di una data, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe DateFunctions, il giorno della settimana della data inserita, qualora possibile.
Nel caso in cui i valori inseriti non corrispondano ad una data valida, tale funzione deve sollevare una eccezione DataNonValidaException, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "La data giorno/mese/anno non corrisponde ad una data valida!
N.b.: il giorno risultante può essere anche in inglese.

Esempio 1
Inserire il giorno: 1
Inserire il mese: 1
Inserire l'anno: 2024
Output:
Il giorno del 01/01/2024 è lunedì.

Esempio 2
Inserire il giorno: 35
Inserire il mese: 15
Inserire l'anno: 2024
Output:
La data 35/15/2024 non corrisponde ad una data valida!

Soluzione

11) Soluzioni equazione di secondo grado

Realizzare una applicazione Java che chieda all'utente di inserire tre numeri rappresentanti i coefficienti a, b, c di una equazione di secondo grado ax^2 + bx + c = 0, calcoli e stampi, utilizzando una funzione statica appositamente definita in una classe MathFunctions, le soluzioni reali dell'equazione, qualora possibile.
Nel caso l'equazione sia impossibile, tale funzione deve sollevare una eccezione, che deve permettere di ottenere, attraverso il metodo getMessage, il messaggio "L'equazione ax^2 + bx + c = 0 non ammette soluzioni reali!", dove al posto di a, b, c ci siano i valori inseriti dall'utente.

Esempio 1
Inserire il coefficiente a: 1
Inserire il coefficiente b: -5
Inserire il coefficiente c: 6
Output:
Le soluzioni dell'equazione x^2 - 5x + 6 = 0 sono x1 = 3 e x2 = 1.

Esempio 2
Inserire il coefficiente a: 1
Inserire il coefficiente b: -4
Inserire il coefficiente c: 4
Output:
Le soluzioni dell'equazione x^2 - 4x + 4 = 0 sono coincidenti e sono x1 = x2 = 2.

Esempio 3
Inserire il coefficiente a: 1
Inserire il coefficiente b: 4
Inserire il coefficiente c: 5
Output:
L'equazione x^2 + 4x + 5 = 0 non ammette soluzioni reali!.