Newsgroup: it.comp.java
Titolo: Tipi di dato e conversioni in Java 1.2; meno di 2000 errori?

Gentili iscritti,
Sono alle prime armi in Java, sto utilizzando la classe java.util.Stack che
lavora, se non sbaglio, su tipi di dato object, essendo ad esempio definita
la push nel seguente modo:
public Object push(Object item)
Ma quindi uno stack cosa contiene quando viene creato? Un generico object? O
interi? O cosa?
Il mio obiettivo č di prendere un elemento sullo stack e metterlo in num1,
ma forse i seguenti passaggi sono errati? Dove stackcalc č il mio oggetto
stack che ho creato con la new.
Object oggetto = new Object(stackcalc.pop()); /* qui prelevo un elemento da
stack
^
oggetto = stackcalc.pop();
IL COMPILATORE DICE SULLA "O": INVALID DECLARATION.
String stringa = new String(); /* qui traduco l'oggetto in stringa
stringa = oggetto.toString();
num1=Float(stringa); /* qui traduco la stringa in float
Domanda: ho fatto meno di 2000 errori in 5 righe di codice?
o equivalentemente ho scritto...
num1=Float(stackcalc.pop().toString());
Meno di 3000 errori?
Ringrazio anticipatamente per un'eventuale risposta, Vi saluto!
--
Paolo Guagliumi - ICQ 46580228
_______________________________________
Casale Monferrato - Alessandria - Italy
mailto:
pguag...@altavista.net
http://utenticq.hypermart.net

 stack che ho creato con la new.
	Come avrai capito puoi aggiungere allo stack
	solo oggetti derivati da java.lang.Object
	cioe' Integer, Float, String e cosi' via, e 
	quindi non tipi di dati primitivi (int,float,ecc.)
	Ok, Aggiungi allo stack il tuo dato num1 di tipo 
	"float" in questo modo:
	// ... qui dichiri e assegni un valore a num1
	float num1 = 5.5f;	// 5.5f <-- valore float, non double
	// Trasformi num1 al volo in un oggetto Float 
	//   e lo aggiungi allo stack
	stack.push(new Float(num1));	
	// ... qui fai altre cose
 
	// Ora estrai l'elemento in cima allo stack
	//   e lo trasformi da Float a "float" (primitivo)
	Float f = (Float)stack.pop();
	num1 = f.floatValue();
 
	// Ora lo stack e vuoto nuovamente
	Da notare che puoi benissimo usare sempre oggetti
	Float nel tuo programma ed evitare continue
	conversioni da Float (oggetto) a "float" primitivo.
	Quando ti serve il valore "float" di un oggetto
	Float usi il metodo floatValue() come nell'esempio.
	Dipende quante volte hai bisogno di accedere 
	al valore dell'oggetto.
	Esempio con "Float". Molto piu' lineare
	// ... qui assegni un valore a num1 (es. 5.5)
	Float num1 = new Float(5.5f);	// 5.5f <-- valore float, non double
	// Lo Aggiungi allo stack
	stack.push(num1);	
	// ... qui fai altre cose
 
	// Ora estrai l'elemento in cima allo stack
	num1 = (Float)stack.pop();
 
	// Se ti serve il valore "float" di num1
	float f = num1.floatValue();
	// Vogliamo strafare? Ti serve il valore "double" di num1?
	double d = num1.doubleValue();
 
	// Ora lo stack e vuoto nuovamente
 
	Nota:
		num1 = (Float)stack.pop();
		       ^^^^^^^	
	e non Object come nel tuo esempio. Anche 
	se il metodo pop() resistuisce un Object
	(come riportato nella documenzione) possiamo
	tranquillamente fare una conversione al 
	volo (cast) in Float visto che siamo sicuri
	di aver in precendenza inserito un oggetto 
	Float. Se cosi' non e' la virtual machine
	a runtime si incazza e' lancia un exception
	tipo "ClassCastException" segnalandoti il
	problema. 
	Spero di non ever fatto errori di sintassi 
	visto che non ho compilato il codice, 
	spero cmq di essere stato chiaro.				
	ciao
-- 
.o0 andrea "dylan-d" peltrin / "my lirycal form is cloud on   //
.o0 
aDOTp...@eclipse.it
  / your brainstorm", diesel power //
.o0 ICQ# 55273482          / kool keith vs the prodigy      //
.o0  >>> To reply replace DOT with . in e-mail address <<< //