Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
 
[Java] Maledette Eccezioni...
Clicca QUI per vedere il messaggio nel forum
vampiro85
ciao a tutti...
qualcuno sarebbe cosi gentile da spiegarmi perchè il main dato da malchiodi mi dà ste errore???

<<C:\Programmi\Java\jdk1.5.0_03\bin\Programma.java:51: <<unreported exception InvalidVariableException; must be <<caught or declared to be thrown
<< s3.esegui();
<< ^

è sicuramente un problema del mio programma(non di quello di malchiodi) xò non so + che fare!!! sono in crisi fex...

QUALKUNO MI AIUTI PER FAVORE!!!

ARIEL
Prova a vedere se hai lanciato tutte le eccezioni compresa InvalidVariableException nei metodi esegui delle varie classi!

vampiro85
si... cioè... penso di aver fatto giusto x' non da errori nel mio programma... non so + che dire... se vuoi guadarlo ti passo il sorgente...

ARIEL
mandami un pm....

sandrino83
ariel ma tu come la gestisci la executeException? Nel senso...nel programma.java è nel catch in fondo ma nelle classi estese ci sono le altre.....

Vikyg13
Io invece quando faccio partire il main mi dice che non riesce a trovare la classe ExecutionException riferendosi alla riga "catch(ExecutionException e)" del main

Come mai secondo voi??

sandrino83
vikyg13.....idem succede a me

Joda
dovete importare il package corretto, sempre che non sia un' eccezione di sistema.

sandrino83
in ke senso....quale package.......non è un'eccezione di sistema.....penso

sandrino83
in ke senso....quale package.......non è un'eccezione di sistema.....penso........se modifico programma.java e in fondo nel catch sostituisco executionexception con exception funziona tutto a meraviglia...........

Vikyg13
Si vero, funziona anche a me se faccio quello che dice sandrino!Non so se mi funziona correttamente però il prgramma parte

Joda
Originally posted by Vikyg13
Si vero, funziona anche a me se faccio quello che dice sandrino!Non so se mi funziona correttamente però il prgramma parte


dunque il package che Java carica di default è java.lang, infatti le classi String, Integer, etc fanno parte di questo package, mentre le altre bisogna eseguire l'import dei package idonei

l'eccezione incriminata è un'eccezione del package java.lang ? se si la deve vedere se no bisogna fare l'import della package idoneo.

import ????

attenta se è richiesto di catchare quella eccezione vuol dire che nel codice ci deve essere un catch(eccezione).

Vikyg13
Si ho capito cosa vuoi dire, ma l'import l'ho controllato, è corretto!!

Vikyg13
Ho risolto, sandrino,t sto mandando un pm

Joda
Originally posted by Vikyg13
Si ho capito cosa vuoi dire, ma l'import l'ho controllato, è corretto!!


allora o non viene importata il package o non viene mai lanciata quel tipo di eccezione.

sandrino83
in quale classe va importato?

Vikyg13
Ho risolto, sbagliavo io nell'importazione!

spenk.85
scusa, ma executionexception è la "superclasse" delle altre eccezioni che può lanciare il prog?

sandrino83
esattamente......infatti se ci fai caso executionexception è un errore generico che non viene mai lanciato in modo specifico nel codice mentre le altre eccezzioni sonosottoclassi della stessa..............

spenk.85
bella! almeno le eccezione sono giuste,,,ora parte l'operazione clone!

Crashman
Voi come le avete fatte, controllate o non controllate?

spenk.85
non controllate, non è richiesto nessuno controllo se non sbaglio

Skioda86
Ragazzi, sapete cosa sia questo errore??? Non l'avevo mai visto prima:

Exception in thread "main" java.lang.NumberFormatException: For input string: "arg1"

at java.lang.NumberFormatException.forInputString<Unknown Source>
at java.lang.Integer.parseInt<Unknown source>
at java.lang.Integer.parseInt<Unknown source>
at Selezione.esegui<Selezione.java:38>
at Sequenza.esegui<Sequenza.java: 13>
at Programma.main<Programma.java: 50>

- Dove alla riga 38 della Selezione ho:
if(Integer.parseInt(variabile) <= valore)

- Dove alla riga 13 di Sequenza ho:
elenco[i].esegui();

-Dove alla riga 50 del programma ho:
s3.esegui();

Premetto che in dos scrivo ....> java Programma 1 2



Ho modificato stamane la classe Sequenza in cui, non avendo capito cosa deve fare il metodo esegui di questa classe, ho provato a scrivere:

for(int i=0;i<elenco.length;i++)
elenco[i].esegui();


e dopodichè ho "aggiustato" qua e la le altre classi come mi pareva di ritenere giusto, ma da quel momento è cominciato ad uscire questo errore!!! HELP

Joda
Originally posted by Skioda86
Ragazzi, sapete cosa sia questo errore??? Non l'avevo mai visto prima:

Exception in thread "main" java.lang.NumberFormatException: For input string: "arg1"

at java.lang.NumberFormatException.forInputString<Unknown Source>
at java.lang.Integer.parseInt<Unknown source>
at java.lang.Integer.parseInt<Unknown source>
at Selezione.esegui<Selezione.java:38>
at Sequenza.esegui<Sequenza.java: 13>
at Programma.main<Programma.java: 50>

- Dove alla riga 38 della Selezione ho:
if(Integer.parseInt(variabile) <= valore)

- Dove alla riga 13 di Sequenza ho:
elenco[i].esegui();

-Dove alla riga 50 del programma ho:
s3.esegui();

Premetto che in dos scrivo ....> java Programma 1 2



Ho modificato stamane la classe Sequenza in cui, non avendo capito cosa deve fare il metodo esegui di questa classe, ho provato a scrivere:

for(int i=0;i<elenco.length;i++)
elenco[i].esegui();


e dopodichè ho "aggiustato" qua e la le altre classi come mi pareva di ritenere giusto, ma da quel momento è cominciato ad uscire questo errore!!! HELP


Così sembra che non riesca a convertire il valore passato a parseInt, comunque c'e' sempre il vecchio metodo della nonna lo step-by-step per trovare gli errori :)

Skioda86
Originally posted by Joda

Così sembra che non riesca a convertire il valore passato a parseInt, comunque c'e' sempre il vecchio metodo della nonna lo step-by-step per trovare gli errori


Esatto!! Sembra che richiamado nell'esegui del metodo Sequenza (in cui faccio eseguire tutte le istruzioni all'interno dell'array elenco) in questo modo elenco[i].esegui() non riesca più a trasformare in numero la stringa che dovrei avergli dato in input, ma no stroverà neanche la stringa perchè gia utilizzata in precedenza....NO??!!!

Cmq è tutta mattina che provo. Se tolgo elenco[i].esegui() funziona tutto alla perfezione (O QUASI....DICIAMO PERFEZIONE FIN DOVE SONO RIUSCITO AD ARRIVARE)...Se invece lo lascio...nn va più niente....ed esce quel bel errore di prima....ke palle!!!

Joda
Originally posted by Skioda86
Esatto!! Sembra che richiamado nell'esegui del metodo Sequenza (in cui faccio eseguire tutte le istruzioni all'interno dell'array elenco) in questo modo elenco[i].esegui() non riesca più a trasformare in numero la stringa che dovrei avergli dato in input, ma no stroverà neanche la stringa perchè gia utilizzata in precedenza....NO??!!!

Cmq è tutta mattina che provo. Se tolgo elenco[i].esegui() funziona tutto alla perfezione (O QUASI....DICIAMO PERFEZIONE FIN DOVE SONO RIUSCITO AD ARRIVARE)...Se invece lo lascio...nn va più niente....ed esce quel bel errore di prima....ke palle!!!


usi un editor tipo eclipse ? se si puoi fare il debug passo passo ... in modo da capire esattamente quale sia la riga.

togliendo esegui va tutto (+ o -) allora può darsi che sia esegui strutturata male.

Però ripeto senga un debug step by step ci capisci poco e nulla ( a mano penso sia da suicidio).

sbrandu
Ma scusate il proble non è forse che il metodo parse int applicato a una stringa funziona solo se la stringa contiene un valore(sotto forma di stringa tipo variabile="1").. in questo caso variabile contiene dei caratteri che formano la stringa tipo variabile="arg1", quindi il metodo parseInt non può (credo) convertire la scritta in un valore intero.
Forse dovresti riferirti al valore contenuto in variabile richiamandolo dall'hashtable tipo hashtable.get(variabile) <- questa istruzione fa riferimento al valore della variabile variabile in hastable che credo sia ciò chhe ti serve..

Joda
Originally posted by sbrandu
Ma scusate il proble non è forse che il metodo parse int applicato a una stringa funziona solo se la stringa contiene un valore(sotto forma di stringa tipo variabile="1").. in questo caso variabile contiene dei caratteri che formano la stringa tipo variabile="arg1", quindi il metodo parseInt non può (credo) convertire la scritta in un valore intero.
Forse dovresti riferirti al valore contenuto in variabile richiamandolo dall'hashtable tipo hashtable.get(variabile) <- questa istruzione fa riferimento al valore della variabile variabile in hastable che credo sia ciò chhe ti serve..


certamente se a parseInt passi una stringa di caratteri, non converte nulla e viene generata un'eccezione.

sbrandu
Beh allora skioda86 non ti resta che correggere..:D

Skioda86
sbrandu

Ma scusate il proble non è forse che il metodo parse int applicato a una stringa funziona solo se la stringa contiene un valore(sotto forma di stringa tipo variabile="1").. in questo caso variabile contiene dei caratteri che formano la stringa tipo variabile="arg1", quindi il metodo parseInt non può (credo) convertire la scritta in un valore intero.
Forse dovresti riferirti al valore contenuto in variabile richiamandolo dall'hashtable tipo hashtable.get(variabile) <- questa istruzione fa riferimento al valore della variabile variabile in hastable che credo sia ciò chhe ti serve..

Joda

Certamente se a parseInt passi una stringa di caratteri, non converte nulla e viene generata un'eccezione.


sbrandu

Beh allora skioda86 non ti resta che correggere..:D


Grazie ragazzi....Sì è vero, sono 1 PIRLA!!!:wall:
Ma sapete...stando davanti al PC ore ed ore :pc:per poi vederti sparare fuori ste cagate, anche gli errori più semplici NON SI RIESCONO PIU' A SCOVARE!!!!

Cmq ora il mio dilemma è un altro...è un'altra piccola eccezione che mi esce....ma sinceramente non l'ho mai vista. Appena trovo il modo di sviarla la posto con la relativa soluzione...!!!
Intanto non ci resta che SOFFRIRE...!!!!

Pensate che ora ho appena provato il programma dopo delle modifiche alla hashtable e INDOVINATE 1 PO'!!!???

Mi dice che c'è un errore in questo SEMPLICISSIMO
if (decremento < 0){
decremento= ((int)memoria.get(variabile)) - decremento;
memoria.remove(variabile);
memoria.put(variabile,((Integer) decremento);}

C'è proprio da impazzire!!! Mi stà a tirà per il :sedere:!!!

Boh ads...vado a sistemare un pò!! Un'altra cosa...
qualcuno è capace di usare
Map.Entry ???? POSTATE...POSTATE!!!

BYEEEEEEEEEEEEEEEEEEEE E BUON LAVORO A TUTTI!!!

Crashman
code:
{ decremento= ((int)memoria.get(variabile)) - decremento; memoria.remove(variabile); memoria.put(variabile,((Integer) decremento);}

Tutto questo si poteva fare in un unica istruzione :)

Skioda86
Crashman

code: {
decremento= ((int)memoria.get(variabile)) - decremento;
memoria.remove(variabile);
memoria.put(variabile,((Integer) decremento);}


Tutto questo si poteva fare in un unica istruzione :)


Posso sapere quale??? Usando il set...qualcosa che ora non ricordo??? :D THANKS....






W OPEN SOURCE!!!!

Skioda86

Crashman

code: {
decremento= ((int)memoria.get(variabile)) - decremento;
memoria.remove(variabile);
memoria.put(variabile,((Integer) decremento);}


Tutto questo si poteva fare in un unica istruzione :)



L'istruzione a cui ti riferivi era forse:

memoria.put(variabile,(memoria.get(variabile) - ((Integer)decremento));

:D :D :D ::pc:
Ma sai...preferisco agire di mano mia sulla hashtable...almeno "sò" cosa stò facendo....O ALMENO SI SPERA
:):):)


W OPEN SOURCE

Drowne
C'è bisogno di fare il remove prima di fare un put o è solo una precauzione?

Joda
Originally posted by Drowne
C'è bisogno di fare il remove prima di fare un put o è solo una precauzione?


dipende dal contesto, puoi fare anke un set (sempre se si può ora non ricordo) ?

Drowne
come si usa il set, scusami?

se faccio memoria.set(variabile,valore); da errore in compilazione...

Joda
Originally posted by Drowne
come si usa il set, scusami?

se faccio memoria.set(variabile,valore); da errore in compilazione...


puodarsi che non sia un metodo supportato, ora non mi ricordo... controlla nella doc della hashtable.

sbrandu
Nessuno è riuscito a sbrogliare il problema dell'indentazione?

sbrandu
Nessuno è riuscito a sbrogliare il problema dell'indentazione?
Io ci sto provando cercando di utilizzare come aveva detto qualcuno il metoto istanceof, ma è come se java non lo riconoscesse..

Crashman
Originally posted by sbrandu
Nessuno è riuscito a sbrogliare il problema dell'indentazione?
Io ci sto provando cercando di utilizzare come aveva detto qualcuno il metoto istanceof, ma è come se java non lo riconoscesse..

Non serve istanceof...
la soluzione a questo problema è decisamente più facile di quello che pensate ;)

Drowne
ok, nulla avevo scritto una stronzata ^_^


edit :D

Crashman
Originally posted by Drowne
qualcuno mi sa dire se questa identazione va bene?


No l'identazione corretta è questa:
code:
crashman@linux> java Programma 3 4 DECLARE s; DECLARE arg1; arg1 = 3; IF (arg1<=0) PRINT "Primo argomento invalido"; ELSE DECLARE arg2; arg2 = 4; IF (arg2<=0) PRINT "Secondo argomento invalido"; ELSE WHILE (arg1!=0) arg1 -= 1; s += 1; WHILE (arg2!=0) arg2 -= 1; s += 1; PRINT s; 7

;)

sbrandu
Un aiutino Crashman tu che ce l'hai fatta per l'indentazione?

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate