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
 
[PROGETTO] L'esecuzione
Clicca QUI per vedere il messaggio nel forum
Vorgoth
Il file my compila perfettamente, ma quando lo eseguo appare:

code:
C:\...\myLanguage>java Programma 5 10 DECLARE s; DECLARE arg1; arg1 = 5; IF (arg1<=0) PRINT "Primo argomento invalido" ELSE DECLARE arg2; arg2 = 10; IF (arg2<=0) PRINT "Secondo argomento invalido" ELSE WHILE (arg1!=0) arg1 -= 1; s += 1; WHILE (arg2!=0) arg2 -= 1; s += 1; PRINT s; InvalidVariableException: at Assegna.esegui(myLanguage.java:257) at Sequenza.esegui(myLanguage.java:34) at Programma.main(myLanguage.java:445)


Qualcuna ha idea di cosa si tratti?

Il problema sembra essere nei metodi che chiamano Assegna, o meglio, in Assegna stessa (la classe esegui()?), che comunque mi sembra giusta. L'exception viene lanciata nella parte centrale:

code:
if (memoria.containsKey(variabile) == false) throw new InvalidVariableException(); else { memoria.remove(variabile); memoria.put(variabile, new Integer(valore)); }

Vorgoth
Se commento tutte le exceptions (ho provato per cercare di rintracciare l'errore), mi lancia un eccezzione NullPointer quando viene usato istrSe.esegui() nella classe Selezione.

Non so se serve per capirci di piu'. -_-

Skioda86
InvalidVariableException:
at Assegna.esegui(myLanguage.java:257)
at Sequenza.esegui(myLanguage.java:34)
at Programma.main(myLanguage.java:445)


Scusami, ma come diavolo fai ad avere 445 righe di codice nel programma che ci ha dato il profe se quest'ultimo sarà non più di 50 righe?????!!!!

Vorgoth
Ho messo tutto nello stesso file per simplificare le cose dato che continuo a dover modificare e ri-compilare.

Non dovrebbe cambiar nulla, non credo c'entri col problema...

La cosa che non riesco a capire è perche' l'intero programma funziona come se le variabili non venissero dichiarate, eppure anche Dichiara.esegui() mi sembra corretta.

code:
if (memoria.containsKey(variabile)) throw new ExistingVariableException(); else memoria.put(variabile, new Integer(0));

m410
scusa magari non centra niente e sto dicendo una cavolata ma se provi a mettere Istruzione o super prima di memoria cosa succede? tipo Istruzione.memoria.put...

Vorgoth
La mia variabile Hashtable memoria è public, quindi dovrebbe essere leggibile da tutte le altre classi. Comunque ho provato e mentr con Istruzione.* non compila neanche, con super.* da sempre lo stesso errore.

:\:\

m410
è statica?

Vorgoth
cosa intendi? Non l'ho dichiarata static.

ARIEL
con static la estendi anche alle sottoclassi!

A. Wesker 86
quoto : dichiarala static la hashtable

Vorgoth
Ora l'eccezione che appare è unaltra,
code:
InvalidOperandException: Operatore sbagliato. at Iterazione.esegui(myLanguage.java:165) at Sequenza.esegui(myLanguage.java:34) at Selezione.esegui(myLanguage.java:103) at Sequenza.esegui(myLanguage.java:34) at Selezione.esegui(myLanguage.java:103) at Sequenza.esegui(myLanguage.java:34) at Programma.main(myLanguage.java:397)


...presumo quindi che il problema di prima si sia risolto (anche se svelandone un altro..d'oh).

Anche qua prevedo di starci delle ore, dato che in apparenza sembra tutto corretto....--_-;

Vorgoth
Risolto :D.........-_- e ora mi da come risultato finale sempre "2".

No comment.

Drowne
Visto che ci troviamo... A me succede questo. Metto come valori 10 5.

l'output ( mettendo dei system out in incrementa e decrementa ) è questo:

code:
DECLARE s; DECLARE arg1; arg1 = 10; IF(arg1<=0) PRINT ''Primo argomento invalido''; ELSE DECLARE arg2; arg2 = 5; IF(arg2<=0) PRINT ''Secondo argomento invalido''; ELSE WHILE(arg1!=0) arg1 -= 1; s += 1; WHILE(arg2!=0) arg2 -= 1; s += 1; PRINT s; decremento: 1 decr2 caricato dall hashtable: 9 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 1 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 8 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 2 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 7 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 3 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 6 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 4 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 5 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 5 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 4 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 6 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 3 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 7 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 2 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 8 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 1 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 9 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: 0 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 10 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: -1 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 11 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: -2 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 12 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: -3 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 13 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: -4 dovrebbe fermarsi a 0 incremento: 1 incr2 caricato dall hashtable: 14 dovrebbe fermarsi a 0 decremento: 1 decr2 caricato dall hashtable: -5 dovrebbe fermarsi a 0


Con:

incr2 = incremento + (int)memoria.get(variabile);
memoria.put(variabile, incr2);

stessa storia per il decremento...

Ovviamente continua cosi all'infinito O_O

Drowne
ok risolto :D

funzionaaaaaaa

lucafiamma
aiuto!sono nella me*da..sono rimasto da solo e devo assolutamente finire questo progetto!!qualcuno che ha già finito ed è di animo veramente buono potrebbe aiutarmi...Io ho già scritto tutto ma correggo un errore e ne spunta un altro...Vi prego una mente illuminata potrebbe darmi qualche dritta! Grazie Mille ve ne sarò grato per sempre!!

Vorgoth
!@£!$!@#£*$!@£$!!!

:evil:

Robbie
drowne ho il tuo stesso problema mi dici come hai risolto ? :D
grazieeeeeee

Vorgoth
FINTIO DICO ZNJANENkla

Drowne
in pratica i while erano cosi:

if (operazione.equals(">")) {
while(var>valore) {
ESEGUI CORPO;
}

solo che in questo modo VAR non cambia mai... basta fargliela leggere dentro il while dall'hashtable...

while (zazazaza) {
var = pigliatelo dall'hash
ESEGUI CORPO;}

sbrandu
In java 1.5 andava tutto bene..
Passo a java 1.4 faccio tutti i casting e correggo iterazione come ha detto Drowne (non capisco perchè in java 1.5 andava anche senza correzione) e porca pupazza mi stampa la somma+2 al posto della somma e basta.
Se metto 10 e 5 mi stampa 17..
Se metto 1 e 2 mi stampa 5..
Ma dico io perchè?!
Qualcuno ha qualche consiglio?

Drowne
io non ce l'ho ancora messo, lo faccio domani che sono distrutto oggi :ph34r:

sbrandu
buona fortuna
se ti capita il mio problema (non te lo auguro) fammi sapere..

Skioda86
Posso sorgere un dilemma???!!!
:?:?:?:?:?:?:?:?:?

Ho riguardato la hashtable modellandola per la versione 1.4 e MAGIA DELLE MAGIE...Sono riuscito a sottoporre l'intero progetto!!! Senza però testarlo sul mio PC!!!!

Ma dato che sono molto dubbioso e Se nn ci infilo il dito(non gode:))nn credo.....Dato che ho installato la JDK con Jre 1.5.0.2
come faccio ad installare e controllare la validità del mio progetto se non ho la versione 1.4???!!! ANTICIPO CHE QUI A CASA HO IL 56k!!

Come posso fare??

HELP :(:?:?:?:?:?:?:?:?:?:?

Drowne
con Eclipse si puo usare anche la 1.4.... ce l'hai, vero?

Skioda86
No, uso Netbeans l'ultima versione comprese le patch ufficiali di aggiornamento! Ma il mio problema è che non posso manco scaricarla qui a casa! Dovrei venire lì a milano!
Ho la JKD jre 1.5!!!

D..O che sfiga!!!
KMQ A ME LO SOTTOPONE LO STESSO!!! MAGARI E' TUTTO GIUSTO E SONO IO A TIRARMI LE PARANOIE...!!! O...MAGARI NON E' COSI'!!! :) :(

GrandeMago
Raga io ho un problema!...a me il programma stampa sempre "Primo argomento invalido!" e non riesco a trovare l'errore!...dove che sbaglio?!mi date un aiutino per favore!:(

Drowne
E' sicuramente nella classe Selezione... Controlla l'esegui.

GrandeMago
Ti ringrazio drowne...quindi l'errore dovrebbe essere in questi pezzetti di if?

if (((Integer)memoria.get(variabile)).intValue()>valore)
istrSe.esegui();
else istrAltrimenti.esegui();

Io in selezione ho fatto una serie di if annidati dove confronta solo e richiama esegui sulle istruzioni!devo controllare if quando legge in memoria?!:?

matt23
Originally posted by Drowne
in pratica i while erano cosi:

if (operazione.equals(">")) {
while(var>valore) {
ESEGUI CORPO;
}

solo che in questo modo VAR non cambia mai... basta fargliela leggere dentro il while dall'hashtable...

while (zazazaza) {
var = pigliatelo dall'hash
ESEGUI CORPO;}



Drowne, per "zazazaza" intendi quello che c'è nel while precedente ?? solo che non è chiaro "var = blablabla"... dai una dritta che qua il 13 si avvicina ^_^

Drowne
avevo scritto il codice giusto ma l'ho dovuto editare, mi spiace :(

cmq zazazaza = quello che c'era nel while prima, si :D

var = ci va la robaccia per prendere il valore dall'hash ( senza che lo scrivo io, l'ha scritto Grandemago nel reply prima del tuo, cosi siamo tutti contenti ^_^ )

@Grandemago:

quello è giusto... Hai usato qualcosa tipo (operazione == ">=") oppure hai usato equals? Io, personalmente ho usato equals per sicurezza...

ad676556
ragazzi..... ho mandato in esecuzione il programma di malchiodi e mi esce:
Exception in thread "main" java.lang.NullPointerException
at Incrementa<int><Incrementa.java:9>
at Programma.main<Programma.java:10>
SAPETE COSA VUOL DIRE........MI STO DANNANDO MA NN RIECO A CAPIRE QUAL'E' L'ERRORE!!!!!!!!:evil:.......

matt23
ok.... ora ho un solo problema, MORTALE! il programma, compila e stampa quello che deve stampare a sola eccezione del risultato, questo dipende sicuramente dal primo WHILE che mi stampa nel decrementa arg2 invece di arg1.... non capisco perchè, da quale può dipendere secondo voi??

DECLARE s;
DECLARE arg1;
arg1 = 10;
IF(arg1<=0)
PRINT "Primo argomento invalido";

ELSE
DECLARE arg2;
arg2 = 5;
IF(arg2<=0)
PRINT "Secondo argomento invalido";

ELSE
WHILE(arg1!=0)
arg2 -= 1;
s += 1;
WHILE(arg2!=0)
arg2 -= 1;
s += 1;
PRINT s;

m410
a me faceva così perchè non usavo il clone nei costruttori

matt23
puoi spiegarti meglio? penso mi puoi essere molto d'aiuto.. tnx

m410
prova a mettere corpo=(Istruzione)c.clone() nel costruttore di iterazione

matt23
l'ho messo ma non mi ha risolto nulla...cazz, devo andare a lavorare :( ci aggiorniamo su sta cosa! grazei lo stesso!!
ma clone l hai usato anche su altri metodi??

m410
no nei costruttori fallo anche in Sequenza

matt23
OTTIMO GRAZIE MILLEEE!!! ti devo ... bo un caffè? ihihihhii :-)

matt23
ah no, ora stampa pure..grazie grazie, sono commosso

GrandeMago
Originally posted by Drowne
avevo scritto il codice giusto ma l'ho dovuto editare, mi spiace :(

cmq zazazaza = quello che c'era nel while prima, si :D

var = ci va la robaccia per prendere il valore dall'hash ( senza che lo scrivo io, l'ha scritto Grandemago nel reply prima del tuo, cosi siamo tutti contenti ^_^ )

@Grandemago:

quello è giusto... Hai usato qualcosa tipo (operazione == ">=") oppure hai usato equals? Io, personalmente ho usato equals per sicurezza...


ho usato equals! mi sto dannando, non riesco a capire perchè non mi stampa questa benedetta somma!:twisted:

ad676556
Perfavore...........ragazzi rispondete........ho mandato in esecuzione il programma di malchiodi e mi esce:
Exception in thread "main" java.lang.NullPointerException
at Incrementa<int><Incrementa.java:9>
at Programma.main<Programma.java:10>
SAPETE COSA VUOL DIRE........MI STO DANNANDO MA NN RIESCO A CAPIRE QUAL'E' L'ERRORE!!!!!!!!.......:(

GrandeMago
Originally posted by ad676556
Perfavore...........ragazzi rispondete........ho mandato in esecuzione il programma di malchiodi e mi esce:
Exception in thread "main" java.lang.NullPointerException
at Incrementa<int><Incrementa.java:9>
at Programma.main<Programma.java:10>
SAPETE COSA VUOL DIRE........MI STO DANNANDO MA NN RIESCO A CAPIRE QUAL'E' L'ERRORE!!!!!!!!.......:(

devi controllare il costruttore di sequenza...almeno a me faceva lo stesso errore e il problema era lì, dimenticavo un passaggio prima del for...

ad676556
scusa ma io l'ho controllato cento volte e mi sembra giusto.......ma tu cosa avevi dimenticato.........in modo da vedere se è quello anche per me..........

GrandeMago
prova inserendo prima del for

elenco = new Istruzione[e.length]

no so se per te è uguale però a me ha smesso di fare l'errore appena ho inserito questa riga.....anche se adesso invece di darmi in output la somma mi dà sempre Primo argomento in valido! e non capisco che cavolo è!:evil:

ad676556
nn saprei..........cmq ora vedo se mi da ancora quell'errore e se nn mi esce ci incontriamo e ti offro qualcosa:-D

ad676556
dannazione.......ho fatto quello che mi avevi detto tu.......ma niente .........l'errore nn vuole andarsene.............:wall:

GrandeMago
Qualcuno può aiutarmi a capire perchè mi esce sempre primo argomento invalido invece della somma?! è tutto il pom che ci sbatto ma niente!!!...vi prego!:?

GrandeMago
Note:......\Incrementa.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Jcreator mi compila tutto ma mi dà questa nota?! qualcuno sa che vuol dire?!

Drowne
nulla di preoccupate, non mi ricordo come l'avevo tolta, dopo ci do uno sguardo e te lo dico :D

matt23
Originally posted by sbrandu
In java 1.5 andava tutto bene..
Passo a java 1.4 faccio tutti i casting e correggo iterazione come ha detto Drowne (non capisco perchè in java 1.5 andava anche senza correzione) e porca pupazza mi stampa la somma+2 al posto della somma e basta.
Se metto 10 e 5 mi stampa 17..
Se metto 1 e 2 mi stampa 5..
Ma dico io perchè?!
Qualcuno ha qualche consiglio?


Ragazzi ho il suo stesso problema.... voi sapete il perchè????

dany12185
Ti esce quello xkè hai un compilatore java 1.5...se usi java 1.4 non ti da quell'errore...per eliminarlo devi modoficare la dichiarazione dell'hashtable così: Hashtable<String,Integer> memoria= new Hashtable<String,Integer>(); però così il sito non lo accetta xkè questa funzione c'è solo in java 1.5. Comunque non ti preoccupare, anche se ti esce quel messaggio stai tranquillo che ha compilato, prova ad eseguire e vedrai che funziona.

matt23
dany12185
non ho capito a chi rispondevi, se a me..io sto usando Eclipse in java 1.4, mi dà questo +2 in tutte le somme, magari ho toppato io qualcosa però mi sembra molto strano!!

Joda
Originally posted by matt23
dany12185
non ho capito a chi rispondevi, se a me..io sto usando Eclipse in java 1.4, mi dà questo +2 in tutte le somme, magari ho toppato io qualcosa però mi sembra molto strano!!


hai provato a fare il debug con eclipse ?

matt23
no... eclipse, questo sconosciuto ihihihih lo sto usando da venerdì sera, non ho ancora capito benissimo come funge il debug, devo usare "step by step" ?

Joda
Originally posted by matt23
no... eclipse, questo sconosciuto ihihihih lo sto usando da venerdì sera, non ho ancora capito benissimo come funge il debug, devo usare "step by step" ?


si.
OT
Devi prima mettere dei breakpoint e poi lanciare il progetto in modalità debug ed eseguire step-by-step.

matt23
uhhhmmm....allora ho piazzato dei breakpoint, vado in "debug", lancio con "run", ho le finestre di "debug" dove ho selezionato "step by step", poi ho i breakpoint a destra, sotto il mio codice coi break e sotto il programma in esecuzione, ma non manca la finestra che mi visualizza i passi che stanno facendo le mie variabili??

Drowne
non devi andare su run, ma sullo scarafaggio alla sua sinistra "debug". In questo modo eclipse ti mette in pausa il tuo programma dove hai messo i breakpoint e nella finestra in alto a destra ti visualizza i valori delle variabili.

GrandeMago
Raga vi prego, qualcuno che mi aiuti!non riesco ad ottennere la somma come output, sempre primo argomento invalido!
ma se lo consegnassi con questo errore sarebbe un errore grave secondo voi?!

ad676556
ragazzi aiuto...........mi esce questo:

ad676556
ciao.......ragazzi ve lo metto avideo l'errore:

DECLARE s;
DECLARE arg1;
arg1 = 10;
IF (arg1<=0)
PRINT Primo argomento invalido;

ELSE
DECLARE arg2;
arg2 = 5;
IF (arg2<=0)
PRINT Secondo argomento invalido;

ELSE
WHILE(arg1!=0)
arg1 -=1;
s +=1;
WHILE(arg2!=0)
arg2 -=1;
s +=1;
PRINT s;


-
e mi si blocca così..........il trattino in fondo è dovrebbe essere il segno del mouse ma nn lampeggia.....e nn mi permette di scrivere più niente........nn capisco che errore è..............aiutatemi perfavore.........sto inpazzendo:wall:

Vikyg13
E' un errore di loop cioè qlke ciclo nn finisce mai, controlla iterazione.

Quando succede premi ctrl+c ed esce

ad676556
ok.....verificherò............e speriamo che riesca a risolvere questo problema.......

ad676556
nn sto riuscendo a risolvere il problema del loop...........aiutatemi :(
vi metto a video il codice di decrementa:

if (this.decremento>0) {

Integer dato= (Integer) (memoria.get(variabile));
int datoInt = dato.intValue();
int newVal=datoInt- decremento;
....


Intervento del moderatore:
Un po troppo codice. limitare le pubblicazioni

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