|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
eccezzioni ed arreylist
Salve ho alcuni problemi con java mi potete dire quando e come usare try e catch per le eccezzioni e come ordinare un arraylist...please
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
La classe java.util.Collections ha 2 metodi sort() che operano su un List<T>. La prima versione si basa sul "natural ordering", in pratica gli oggetti devono implementare Comparable. La seconda versione si basa su un Comparator. In entrambi i casi, gli oggetti devono essere "mutualmente comparabili".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
per esempio quando leggo un file devo inserirla l'eccezzione come????
mi puoi fare un esempio per l'ordinamento
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
dichiari le variabili che ti servono try{esegui le operazioni di lettura ecc....}catch(IOException e){fai qualcosa se si verifica l' eccezione} |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
quindi se scrivo public void leggi(filename) throws IOexception devo mettere anche try e catch
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
ArrayList<String> list = new ArrayList<String> (); list.add ("topolino"); list.add ("paperino"); list.add ("clarabella"); Collections.sort (list);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
quale mi consiglireresti usare per un codice scritto correttamente?? poi un ultima cosa che non trovo:
catch (Exception e) { e.printStackTrace(); il metodo printStackTrace cosa stampa???
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
PrintStack() stampa un log circa la condizioni di esecuzione al momento dell' errore e puo essere utile per individuarne le cause.ricorda di gestire sempre la chiusura degli stream aperti,e lo uoi elegantemente fare con una clausola finally |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2006
Messaggi: 355
|
in che modo, mi fai un esempio??
__________________
Ho concluso felicemente molte transizioni su altri forum e ben 60 feedback positivi su eBay--- Ho concluso felicemete con : royaleagle, SUPERALEX, bambà, bartmad, blade86. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Esempio:
Codice:
import java.io.*; import java.util.*; public class Prova { public static void main (String[] args) { try { String[] lines = readFileInArray ("pippo.txt"); // .... } catch (Exception e) { System.out.println (e); } } public static String[] readFileInArray (String fileName) throws IOException { BufferedReader br = null; try { ArrayList<String> arrLines = new ArrayList<String> (); FileInputStream fis = new FileInputStream (fileName); InputStreamReader isr = new InputStreamReader (fis); br = new BufferedReader (isr); String line; while ((line = br.readLine ()) != null) arrLines.add (line); return arrLines.toArray (new String[0]); } finally { if (br != null) br.close (); } } }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
se io volessi gestire l' eccezione nel metodo readFileInArray nel catch oltre a stampare eventualmente qualcosa sarei obbligato a mettere return istanza di String[] oppure no? |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tieni comunque presente che non devi sempre e in ogni occasione catturare le eccezioni! Immagina che readFileInArray possa essere chiamato in vari punti e momenti della tua applicazione o che possa essere addirittura chiamato da applicazioni diverse (ammettiamo che il metodo sia in un jar utilizzabile in generale da altre classi). Sarebbe una pessima idea mettere un catch lì nel metodo, magari solo per stampare a video l'errore!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
BufferedReader br = null; try { ArrayList<String> arrLines = new ArrayList<String> (); FileInputStream fis = new FileInputStream ("fileName"); InputStreamReader isr = new InputStreamReader (fis); br = new BufferedReader (isr); String line; while ((line = br.readLine ()) != null) arrLines.add (line); return arrLines.toArray (new String[0]);}catch (Exception e) { System.out.println (e); }return new String[1]; } prima che rispondessi avevo fatto questa prova e nonostante manche il return nel catch non segnala l' errore. |
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
In realtà il return new String[1]; l'hai messo al fondo del metodo, non nel catch. In caso di eccezione, esegue il corpo del catch e poi esegue quel return.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
scusa se si solleva l' eccezione il metodo dovrebbe bloccarsi..altrimenti non avrebbe senso la clausola finally.Le istruzioni vengono cmq eseguite il maniera sequenziale per cui verrebbero eseguite ugualmente.
Ultima modifica di nuovoUtente86 : 02-07-2007 alle 14:04. |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Il codice in un blocco finally viene sempre eseguito, in ogni caso.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Ipotizzando che non vi siano return nel catch oppure nel try non è indispensabile utilizzare la finally,almeno dai test che ho fatto è cosi,in quanto con la sequenzialità del codice vengono cmq eseguite le operazioni successive. Io ho sempre creduto che dopo il catch si usciva cmq dal metodo. |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Prova a dire cosa stampa questo codice: Codice:
public class Prova { public static void main (String[] args) { System.out.println (testLen (null)); } public static int testLen (String str) { try { System.out.println ("Sono nel try"); return str.length (); } catch (Exception e) { System.out.println ("Sono nel catch"); return -1; } finally { System.out.println ("Sono nel finally"); return -2; } } } Se senza provare il codice mi dici cosa stampa, non hai vinto nulla ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
sono nel catch -1 sono nel finally -2 |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:32.