 | |
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 |
[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.
:\:\ |
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 |
|
|
|
|