 |
albakiara |
Esercizio su eccezioni: non stampa nulla! |
02-02-2011 12:16 |
|
 |
albakiara |
.illuminato.
Registered: Sep 2010
Posts: 157 (0.03 al dì)
Location: Pavia
Corso: informatica
Anno: 3
Time Online: 19:31:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Esercizio su eccezioni: non stampa nulla!
Salve a tutti,
sto compilando questo esercizio scritto dal prof nell'esame di luglio2010, ho inizializzato l'array con i valori indicati dal prof, ed ho aggiunto in più in ogni catch l'istruzione per stampare il valore di e, però non capisco il motivo per cui non stampa nulla. Qaulcuno mi sa aiutare please?
Allego il codice!
Attachment: num3.java
This has been downloaded 27 time(s).
|
02-02-2011 12:16 |
|
|
|  |
 |
enrico.k |
Ma l'eccezione si verifica o no? ... |
02-02-2011 12:33 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
Ma l'eccezione si verifica o no?
|
02-02-2011 12:33 |
|
|
|  |
 |
enrico.k |
non stampa alcunchè perchè, nel blocco di codic ... |
02-02-2011 12:57 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
non stampa alcunchè perchè, nel blocco di codice che hai allegato non si verifica alcuna eccezione! Quindi nessun blocco catch verrà eseguito.
Il valore della variabile e, alla fine dell'escuzione sarà 11.
|
02-02-2011 12:57 |
|
|
|  |
 |
zandrek |
guarda io ho passato proprio quello scritto ma una ... |
02-02-2011 13:05 |
|
 |
zandrek |
.fedelissimo.
Registered: Oct 2003
Posts: 59 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 21:43:33 [...]
Status: Offline
Edit | Report | IP: Logged |
guarda io ho passato proprio quello scritto ma una delle catch proprio non l'ho risolta = sbagliato un pezzo dell'esercizio.
comunque "ArrayIndexOutOfBoundsException" dubito ti esca usando un for each [prova a scorrere con un for normale e mandalo oltre la misura massima cosi ti da quell'errore]
"ArithmeticException ecc)"
si ottiene quando dividi per zero o robe simili
"null pointer" dovrebbe essere quando fai riferimento a zona di memoria non inizializzata
al posto di
code: e=e/valori[c].getCent();
prova a far cosi (non ho testato)
code: e=e/0;
Last edited by zandrek on 02-02-2011 at 13:07
|
02-02-2011 13:05 |
|
|
|  |
 |
enrico.k |
NOOOO!
... |
02-02-2011 13:13 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
NOOOO!
Scusami zandrek ma hai detto una castroneria.
Se sostituisce l'istruzione con una divisione per zero ovviamente si verifica un ArtitmeticException e, di conseguenza va in esecuzione il blocco catch corrispondente.
Nel suo caso non si verifica alcuna eccezione (22 / 2 non da luogo ad alcuna eccezione),
e di conseguenza la variabile e assume il valore che ha assunto nel ciclo for senza l'esecuzione di alcun blocco catch.
Last edited by enrico.k on 02-02-2011 at 13:28
|
02-02-2011 13:13 |
|
|
|  |
 |
enrico.k |
Comunque, avendo passato anche io questa prova di ... |
02-02-2011 13:37 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
Comunque, avendo passato anche io questa prova di esame ti do i diversi risultati degli esercizi (li ho accaqnto a me e so di averli fatti giusti )
In ogni caso ho passato anche io quella prova d'esame e l'esercizio sulle eccezioni lo ho fatto giusto ed in questo momento ho il foglio della prova accanto a me.
(a) il valore di e è 37
L'eccezione si verifica perchè provi a puntare ad una poisizione 10 dell'array quando la posizione più alta è 3.
(b)(il tuo caso) il valore di e è 11 (ArrayIndexOutOfBoundsException)
Semplicemente non si verifcano eccezioni..
(c) il valore di e è 8 (NullPointerException)
L'eccezione si verifca perchè si tenta di accedere ad un array non inizializzato.
(d) il valore di e è 26 (ArtithmeticException)
L'eccezione si verifica a causa dei una divisione per zero (20/0).
|
02-02-2011 13:37 |
|
|
|  |
 |
zandrek |
ah ma basta dire che nell'esempio vale 11?
... |
02-02-2011 14:16 |
|
 |
zandrek |
.fedelissimo.
Registered: Oct 2003
Posts: 59 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 21:43:33 [...]
Status: Offline
Edit | Report | IP: Logged |
ah ma basta dire che nell'esempio vale 11?
cioè nel for e=22 e c=0.03 quindi 22/3 =11
quel che ho scritto io è per far saltar fuori proprio l' artithmeticException in generale....in effetti non centra una mazza in questo caso...
|
02-02-2011 14:16 |
|
|
|  |
 |
enrico.k |
L'esercizio chiede il valore di e al termine dell' ... |
02-02-2011 14:23 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
L'esercizio chiede il valore di e al termine dell'esecuzione del codice.
Essendo l'istruzione
PHP:
e=e/valori[c].getCent();
assegnerà alla variabile e il valore ottenuto dividendo la stessa variabile e per il valore che si ottiene eseguendo il metodo getCent sull oggetto di tipo Importo presente sulla c(3) posizione dell'array.
Dato che
* Il valore di e prima della divisione è 22.
* il valore ottenuto con il metodo getCent() dall'oggetto di tipo importo presente nella terza posizione dell'array è 2
22/2 = 11
dimmi se è tutto chiaro
Last edited by enrico.k on 02-02-2011 at 14:28
|
02-02-2011 14:23 |
|
|
|  |
 |
albakiara |
grazie cmq.. io avevo dato x scontato che si verif ... |
02-02-2011 15:02 |
|
 |
albakiara |
.illuminato.
Registered: Sep 2010
Posts: 157 (0.03 al dì)
Location: Pavia
Corso: informatica
Anno: 3
Time Online: 19:31:35 [...]
Status: Offline
Edit | Report | IP: Logged |
grazie cmq.. io avevo dato x scontato che si verificasse l'eccezione!!!
mi potete dire cosa fa l'istruzione:
for (Importo v: valori) ?
|
02-02-2011 15:02 |
|
|
|  |
 |
enrico.k |
Si chiama ciclo for-each (per ogni)
... |
02-02-2011 15:08 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
Si chiama ciclo for-each (per ogni)
E' un ciclo for che permeette di scansionare tutti gli oggetti/valori contenuti in un array.
Partendo dalla posizione 0 e crescendo di una posizione ad ogni valore, la variabile v conterrà il riferimento ad ogni oggetto (o il valore di ogni primitivo) presente nell'array ad uno ad uno.
In questo caso alla prima iterazione conterrà il riferimento all'oggetto ti tipo Intero(10.00)(posizione 0), alla seconda a quello ti tipo Intero (0.01)(posizione 1), alla terza a Intero(2.00) (posizione 2)alla quarta Intero(20,02)(posizione 3).
Il ciclo for-each è utilizzabile con gli array e con tutti gli oggetti contenitore la cui classe implementa l'interfaccia Iterable (sempre a proposito di interfacce ).
Last edited by enrico.k on 02-02-2011 at 15:14
|
02-02-2011 15:08 |
|
|
|  |
 |
albakiara |
Grazie!
... |
06-02-2011 10:52 |
|
 |
albakiara |
.illuminato.
Registered: Sep 2010
Posts: 157 (0.03 al dì)
Location: Pavia
Corso: informatica
Anno: 3
Time Online: 19:31:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Grazie!
Mi potreste dire qual'è la sintassi per dire che valori contiene null?
|
06-02-2011 10:52 |
|
|
|  |
 |
enrico.k |
non ho capito bene la domanda...
... |
06-02-2011 13:08 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
non ho capito bene la domanda...
prova a spiegarti meglio 
|
06-02-2011 13:08 |
|
|
|  |
 |
albakiara |
Se l'array contenesse null. La sintassi sarebbe qu ... |
11-02-2011 12:40 |
|
 |
albakiara |
.illuminato.
Registered: Sep 2010
Posts: 157 (0.03 al dì)
Location: Pavia
Corso: informatica
Anno: 3
Time Online: 19:31:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Se l'array contenesse null. La sintassi sarebbe questa?
Importo [] valori= {};
|
11-02-2011 12:40 |
|
|
|  |
 |
enrico.k |
No, quello è un array vuoto ma comunque è inizia ... |
11-02-2011 15:13 |
|
 |
enrico.k |
.fedelissimo.
Registered: Oct 2009
Posts: 46 (0.01 al dì)
Location: Mi
Corso: Informatica
Anno: Primo
Time Online: 2 Days, 8:12:37 [...]
Status: Offline
Edit | Report | IP: Logged |
No, quello è un array vuoto ma comunque è inizializzato.
Un array vuoto è cosa completamente diversa da una variabile non inizializzata.
La variabile Importo[] fa riferimento a null se e non fa riferimento ad alcuno spazio di memoria inizializzato.
Questo può accadere se la fdichiari senza specificare alcun array
es.
Importo[] valori;
oppure se espliciti che non fa riferimento a niente
es.
Importo[] valori = null;
Prova a verificare ciò che ti ho detto scrivendoti due piccoli piccoli programmi di prova in cui provi ad accedere nel primo ad un array vuoto nel secondo ad una variabile non inizializzata per vedere cosa accade..
Last edited by enrico.k on 11-02-2011 at 17:20
|
11-02-2011 15:13 |
|
|
|  |
 |
All times are GMT. The time now is 17:38. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|