La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA.

Presentazioni simili


Presentazione sul tema: "Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA."— Transcript della presentazione:

1 Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA

2 2 Input da Tastiera Fino ad oggi abbiamo visto come stampare a video un risultato tramite loperazione System.out.println(). Oggi faremo vedremo brevemente come si può inserire un input da tastiera. Approfondiremo la gestione dellinput e delloutput nella lezione successiva, ma vi anticipo quali sono le istruzioni per leggere una stringa da tastiera solamente per rendere gli esercizi da svolgere un po più interessanti. Vedremo quindi un esempio su come immettere dei dati da tastiera, in particolare su come immettere un numero intero. Quello che dobbiamo fare è leggere una stringa di caratteri che inseriamo da tastiera e poi convertire tale stringa nel formato che più ci aggrada. Detto questo dobbiamo per forza dichiarare una String in cui andrà a finire tutto quello che verrà scritto sulla tastiera. String Stringa_di_Input; Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

3 3 Input da Tastiera (2) Per leggere una stringa da tastiera, occorre usare il metodo readLine() di DataInputStream, che estende (ovvero e' derivata da) FilterInputStream, che a sua volta estende java.io.InputStream. Per accedere a DataInputStream.readLine() occorre istanziare un oggetto di tipo DataInputStream: DataInputStream leggilo = new DataInputStream(System.in); Al costruttore passiamo lo stream (flusso) da cui prendere input, che nel nostro caso e' System.in, ovvero la tastiera. Ora abbiamo un DataInputStream chiamato leggilo, che possiamo usare per leggere una stringa: Stringa_di_Input = leggilo.readLine(); Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

4 4 Input da Tastiera (3) A questo punto abbiamo una stringa che contiene ciò che abbiamo digitato sulla tastiera. Adesso dobbiamo convertire tale stringa in qualcosa di più significativo: int x; x = Integer.valueOf(Stringa_di_Input); Se il dato fosse stato un float avremmo potuto usare: x float; x = Float.valueOf(stringa).floatValue(); x = Float.valueOf(stringa).intValue(); Nel primo caso se inseriamo 125,83 nella variabile x viene memorizzato il numero 125,83. Nel secondo caso nella variabile x viene memorizzato il numero 125. Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

5 5 Le Eccezioni Quando si legge un input da tastiera, come quando si eseguono altre operazioni (tra cui lutilizzo di array), sarebbe sempre consigliato gestire le eccezioni. Le eccezioni possono essere considerate come dei segnali che vengono generati dal sistema nel momento in cui si verificano degli errori durante l'esecuzione, e servono per far eseguire delle istruzioni di emergenza, come la stampa di messaggi di errore e/o l'interruzione del programma. Ad esempio: int mioarray[]; mioarray = new int[10]; for(int i =0; i<11; i++) mioarray[i]=i; ottengo il seguente risultato: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Visto che questo messaggio ad un utente inesperto è del tutto incomprensibile, magari vorremmo che invece di questo messaggio, ne venisse fuori un altro più comprensibile… Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

6 6 try { Blocco Istruzioni; } catch ( tipo_di_eccezione e) { Blocco Istruzioni; } finally { Blocco Istruzioni; } Prova a fare queste istruzioni…. Se viene intercettata una eccezione di un certo tipo… … esegui queste istruzioni! Indipendentemente dallesserci uneccezione… … fai questaltre istruzioni! Sintassi Try…Catch Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Sintassi Try…Catch…Finally Per gestire le eccezioni si utilizzano le istruzioni try…catch Nota Bene: Il Blocco finally è facoltativo.

7 7 Esempio di utilizzo del Try..Catch Le istruzioni try…catch traducendole dallinglese allitaliano significano: TRY = prova a fare …. CATCH= cattura, intercetta. e si utilizzano nel seguente modo… int mioarray[]; mioarray = new int[10]; try { for(int i =0; i<11; i++) mioarray[i]=i; } catch(Exception e) { System.out.println(Errore durante inserimento dati nellarray); } Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Inserisco 11 elementi in un array di 10: Ottengo una ArrayIndexOutOfBoundException!!! Con il try catch posso far stampare il messaggio di errore sullo schermo, altrimenti otterrei una terminazione anomala del programma.

8 8 Alcuni tipi di eccezioni ArithmeticException: solitamente una divisione per zero. int i = 12 / 0 ; NullPointerException: accesso ad un oggetto non ancora istanziato. Image im[] = new Image[3]; String name = im[0].toString(); NegativeArraySizeException: tentativo di creare un array di dimensione negativa. ArrayIndexOutOfBoundException: tentativo di accesso ad un elemento dellarray fuori dalla dimensione definita. Le eccezioni vengono propagate allindietro dal metodo in cui si verificano al metodo chiamante, fino ad incontrare il codice che la gestisca. Se nessun metodo gestisce leccezione lanciata, si arriva al metodo main( ). Se neanche il metodo main( ) cattura leccezione il programma termina in modo anomalo. Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

9 9 Esempio di Input da Tastiera public static void main(String[] args) { System.out.println("Inserisci un numero intero nella linea in basso..."); int x=0; DataInputStream stream = new DataInputStream(System.in); String stringa; try { stringa= stream.readLine(); x=Integer.valueOf(stringa); } catch(Exception e) { System.out.println("Errore: " + e + " nella lettura da tastiera"); System.exit(0); } System.out.println("Il numero che hai inserito è il numero: "+ x); }; Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

10 10 Creare e gestire le proprie eccezioni Si possono creare e lanciare eccezioni direttamente, tramite listruzione Throw: try { …… if ( i < 0 ) throw new Exception(eccezione di prova); } catch (Exception e) { System.out.println( e.getMessage() ); // msg contenuto System.out.println( e.toString() ); // breve descrizione delleccezione } Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques

11 11 Precisazioni Durante la propagazione all'indietro delle eccezioni tutti i blocchi finally incontrati vengono eseguiti. Non tutte le eccezioni vanno catturate. Si tralasciano quelle che sono sottoclassi di Error e RuntimeException Tutti i metodi che accedono ad array possono generare una ArrayIndexOutOfBoundException che è una sottoclasse di RuntimeException, pertanto non è necessario gestirla (ma si può). Alcune eccezioni 'normali' vanno catturate: java.io.IOException, java.lang.InterruptedException,... Per sapere quali siano queste eccezioni occorre consultare la documentazione dei metodi chiamati o gli errori del compilatore. Corso di Programmazione in Java – Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques


Scaricare ppt "Lezione n° 12 Istituto Statale di Istruzione Superiore F. Enriques Corso JAVA."

Presentazioni simili


Annunci Google