Newsgroup: it.comp.java
Titolo: Conversione scassaballe

Ciao,
chiedo aiuto per problemi di conversione andata a male.
Ho un Vector che ho riempito di array di interi, di int[] insomma. Quando
faccio l'estrazione dal Vector dovrei fare la conversione da Object a int[],
ma, come dicono gli inglesi, "here falls the donkey": ovviamente non va, e
ancor piu' ovviamente non so come sistemarlo.
Grazie in anticipo a tutti!
Niccolo'.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ancor piu' ovviamente non so come sistemarlo.
Qual'é esattamente il codice che non va?
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/

 Niccolo'.
Posta il codice. Nessuno qui ha la sfera di cristallo.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 Posta il codice. Nessuno qui ha la sfera di cristallo.
Ah, giusto. E' una cosa cosi': c'e' il vector v che e' pieno di int[].
Quel che volevo fare e' tipo:
temp[]=((int[])v.elementAt(i));
Solo che la conversione in int[] non funziona! Eccolo li' il problema.


 Solo che la conversione in int[] non funziona! Eccolo li' il problema.
e magari come errore ti da
java.lang.ArrayIndexOutOfBoundsException: Array index out of range:
vero?
-- 
reply: remove duh.spam.
http://javac.imap.cc

 vero?
No, mi dice che non puo' fare la conversione da Obj a int[]! :)


 Niccolo'.
Uhm... per curiosita', dato che in v devi inserire degli Object, non 
puoi aver inserito degli int[]. Cosa c'hai messo dentro? Ecco, quelli 
saranno gli stessi oggetti che tirarai fuori.


 ancor piu' ovviamente non so come sistemarlo.
Vector v = new Vector();
int[] array;
// riempi inl vettore v di oggetti di tipo int[]
array = (int[])v.elementAt(0);
-- 
Marco "Duff" Palermo
http://www.marcoduff.com/

 Ho un Vector che ho riempito di array di interi, di int[] insomma.
Non ho mai provato a fare una cosa del genere quindi non so dirti se 
dovrebbe andare, ma di certo userei degli altri Vector anziche' int[]. 
Quelli vanno di sicuro.

 No, mi dice che non puo' fare la conversione da Obj a int[]! :)
Hmm, strano..
de me questo codice funzia egregiamente...
int[] array = {0, 1, 2, 3, 4};
Vector vector = new Vector();
vector.add(array);
int[] temp = (int[]) vector.get(0);
for (int i = 0; i < temp.length; i++){
     System.out.print(temp[i] + " ");


 temp[]=((int[])v.elementAt(i));
probabilmente devi dichiarare l'array
int[] temp 
e non
int temp[]
oppure togliere le parentesi dall'istruzione:
temp=((int[])v.elementAt(i));
quest'ultima non l'ho provata.
Non capisco la moda di molti di dichiarare int array[]. Per me int[]
è un tipo, diverso da int e va specificato nella dichiarazione.
Che poi in C si facesse nell'altro modo... chissenefrega! ;)


 saranno gli stessi oggetti che tirarai fuori.
Ho fatto gli array cosi':
int[] culo=new int[lunghezza];
Chiamando un costruttore, dovrebbero essere oggetti.
Comunque forse conviene a questo punto vare vector di interi e mandare il
culo 'sti array rompiscatole!: )


 array = (int[])v.elementAt(0);
E' proprio questo che non mi funziona...
Comunque, come suggerito anche da Blade, rimpiazzaero' gli array coi Vector.
Grazie a tutti per l'aiuto!


 culo 'sti array rompiscatole!: )
Secondo me ti ci devono stare, quindi sbagli qualcosa. Ti hanno anche
scritto esempi funzionanti. Usare le liste (Vector, ma sarebbe meglio
ArrayList) non ti conviene perché invece degli int dovresti inserire
Integer con la relativa fatica per incapsulare e recuperare ogni valore e
l'enorme spreco per la creazione di oggetti.


 Niccolo'.
Per curiosità, che versione/implementazione di java stai usando?
Marco


 E' proprio questo che non mi funziona...
Scusa ma cosa non ti funziona? Java e' Java! Se funziona a me, funziona
anche a te!
Prova sto codice:
<code nome_file="Prova.java">
import java.util.Vector;
public class Prova {
	public static void main(String[] args) {
		Vector v = new Vector();
		int[] temp;
 
		v.add(new int[]{1,2,3});
		temp = (int[])v.elementAt(0);
 
		System.out.println("["+temp[0]+","+temp[1]+","+temp[2]+"]");
	}
}
</code>
Se ti funziona in modo diverso o non ti funziona, chiama un esorcista per
il tuo PC!
