Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLauro Conte Modificato 10 anni fa
1
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
2
Corso di Programmazione in Java – Lezione n° 12
Input da Tastiera Fino ad oggi abbiamo visto come stampare a video un risultato tramite l’operazione System.out.println(). Oggi faremo vedremo brevemente come si può inserire un input da tastiera. Approfondiremo la gestione dell’input e dell’output 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; Istituto Statale di Istruzione Superiore “F. Enriques”
3
Corso di Programmazione in Java – Lezione n° 12
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(); Istituto Statale di Istruzione Superiore “F. Enriques”
4
Corso di Programmazione in Java – Lezione n° 12
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. Istituto Statale di Istruzione Superiore “F. Enriques”
5
Corso di Programmazione in Java – Lezione n° 12
Le Eccezioni Quando si legge un input da tastiera, come quando si eseguono altre operazioni (tra cui l’utilizzo 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… Istituto Statale di Istruzione Superiore “F. Enriques”
6
Sintassi Try…Catch…Finally
Corso di Programmazione in Java – Lezione n° 12 Sintassi Try…Catch…Finally Sintassi Try…Catch Per gestire le eccezioni si utilizzano le istruzioni try…catch try { Blocco Istruzioni; } catch ( tipo_di_eccezione e) { finally { Prova a fare queste istruzioni…. Se viene intercettata una eccezione di un certo tipo… … esegui queste istruzioni! Indipendentemente dall’esserci un’eccezione… … fai quest’altre istruzioni! Nota Bene: Il Blocco finally è facoltativo. Istituto Statale di Istruzione Superiore “F. Enriques”
7
Esempio di utilizzo del Try..Catch
Corso di Programmazione in Java – Lezione n° 12 Esempio di utilizzo del Try..Catch Le istruzioni try…catch traducendole dall’inglese all’italiano 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 nell’array”); 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. Istituto Statale di Istruzione Superiore “F. Enriques”
8
Alcuni tipi di eccezioni
Corso di Programmazione in Java – Lezione n° 12 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 dell’array fuori dalla dimensione definita. Le eccezioni vengono propagate all’indietro dal metodo in cui si verificano al metodo chiamante, fino ad incontrare il codice che la gestisca. Se nessun metodo gestisce l’eccezione lanciata, si arriva al metodo main( ). Se neanche il metodo main( ) cattura l’eccezione il programma termina in modo anomalo. Istituto Statale di Istruzione Superiore “F. Enriques”
9
Esempio di Input da Tastiera
Corso di Programmazione in Java – Lezione n° 12 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); }; Istituto Statale di Istruzione Superiore “F. Enriques”
10
Creare e gestire le proprie eccezioni
Corso di Programmazione in Java – Lezione n° 12 Creare e gestire le proprie eccezioni Si possono creare e lanciare eccezioni direttamente, tramite l’istruzione 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 dell’eccezione Istituto Statale di Istruzione Superiore “F. Enriques”
11
Corso di Programmazione in Java – Lezione n° 12
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. Istituto Statale di Istruzione Superiore “F. Enriques”
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.