PDA

Visualizza la versione completa : [JAVA]-Problema con Vector


dasvidania
22-08-2003, 12:36
Cari amici, ho questo problema: quando cerco di ottenere un elemento inserito in 1 vector mi restituisce un tipo Object e quando scrivo queste linee di codice mi da un errore

i=descrizione.getSelectedIndex();
idvec=position.elementAt(i);

i e idvec sono degli interi.

L'ERRORE :
found : java.lang.Object
required: int
idvec=position.elementAt(i);

Cosa devo fare, forse 1 cast?.
HELP ME

Sergio Pedone
22-08-2003, 14:52
Object object = position.elementAt(i);
Integer integer = (Integer)object;
int idvec = integer.intValue();

ciao.

dasvidania
22-08-2003, 16:28
Ok grazie, provavo a fare il cast con l'integer ma in modo errato. Adesso tutto compila. CIAO

dasvidania
22-08-2003, 17:07
Ho scritto queste righe di codice come consigliato ma ho 1 problema:

Object object = position.elementAt(i);
Integer integer = (Integer)object;
idvec = integer.intValue();

Queste tre righe vengono compilate ma se dopo ci metto un istruzione del tipo
JOptionPane.showMessageDialog(null,"VALORE DI idvec : " +idvec);

nn mi appare niente; viceversa se una stessa istruzione la pongo prima delle tre righe di codice scritte sopra, tutto vien visualizzato bene. COME MAI? DOVE HO SBAGLIATO?:dh: :dh:

royalsalerno
22-08-2003, 17:39
Prova cos:

JOptionPane.showMessageDialog(null,"VALORE DI idvec : " +Integer.toString(idvec));

dasvidania
23-08-2003, 08:40
Niente da fare, il problema rimane. La procedura incrimanata la seguente:

if (event.getSource() == ok) //controllo {

String tap;
int i,j,indt;
i=dchoose_locale.getSelectedIndex();
j=cchoose.getSelectedIndex();
tap=tchoose.getSelectedItem();
indt=tchoose.getSelectedIndex();


Object object = position.elementAt(i);
Integer integer = (Integer)object;
idvec = integer.intValue();

object = position2.elementAt(i);
integer = (Integer)object;
idvec2 = integer.intValue();

JOptionPane.showMessageDialog(null,"VALORE DI idvec : " +Integer.toString(idvec));
JOptionPane.showMessageDialog(null,"VALORE DI idvec2 : " +Integer.toString(idvec2));



}


Ringrazio anticipatamente chiunque possa darmi una mano o 1 consiglio

Angelo1974
23-08-2003, 11:11
Ciao.... secondo me dovrebbe funzionare da come scritto, a meno che il getSelectedIndex non dia un valore in cui l'integer.intValue() restituisca null; il problema che se non ti escono nemmeno i JOptionPane vuol dire che nell'if non c'entra proprio....sei sicuro/a che nell'if ci entri?Prova a mettere una System.out.println() nell'if per vedere se c'entra o meno... ad esempio:
if (event.getSource() == ok) //controllo {
System.out.println("Controllo superato....procedo");

String tap;
int i,j,indt;
i=dchoose_locale.getSelectedIndex();
j=cchoose.getSelectedIndex();
tap=tchoose.getSelectedItem();
indt=tchoose.getSelectedIndex();


Object object = position.elementAt(i);
Integer integer = (Integer)object;
idvec = integer.intValue();
System.out.println("idvec: "+idvec);

object = position2.elementAt(i);
integer = (Integer)object;
idvec2 = integer.intValue();
System.out.println("idvec2: "+idvec2);

JOptionPane.showMessageDialog(null,"VALORE DI idvec : " +Integer.toString(idvec));
JOptionPane.showMessageDialog(null,"VALORE DI idvec2 : " +Integer.toString(idvec2));
}
Spero di esserti stato utile....ciao:ciauz:

dasvidania
23-08-2003, 11:59
Si,nell'if entra, anche perch riesco a far visualizzare il valore di
position.elementAt(i), mettendo un istruzione JOptionPane.showMessageDialog prima o dopo l'assegnazione di tale valore alla variabile object. Il problema il cast:

Integer integer = (Integer)object; //forse qui il problema
idvec = integer.intValue();

Vi mostro come ho inserito i valori nel vector e nell'oggetto choose
while(rs.next())
{
position.add(Integer.toString(rs.getInt(1)));
dchoose.add(rs.getString(2).trim());
}
Dovrebbe funzionare

Angelo1974
23-08-2003, 17:01
Integer integer = (Integer)object; //forse qui il problema
idvec = integer.intValue();
Con questo casting stai tramutando object in Integer; ma notando il codice sotto tu a position aggiungi non un Integer bens un oggetto String infatti:

while(rs.next())
{
position.add(Integer.toString(rs.getInt(1)));
dchoose.add(rs.getString(2).trim());
}

Quindi il casting che dovresti fare non pi in Integer bens in String e poi consoderare una cosa del tipo:
Integer integer = (String)object;
idvec = Integer.parseInt( integer );
Prova a vedere se cos va...altrimenti mi sa che sarebbe meglio se postassi la classe java in maniera che tutti ci possano dare 1 occhiata...ciao :ciauz:

Angelo1974
23-08-2003, 21:32
Pardon mi sono reso conto di 1 errore che ho commesso non :
Integer integer = (String)object;
idvec = Integer.parseInt( integer );

bens ( ovviamente )

String integer = (String)object;
idvec = Integer.parseInt( integer );
scusami per l'errore e ciao
:ciauz:

Loading