Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47

    convertire un oggetto di tipo vector in un vettore di String

    ciao ragazzi vi spiego subito l'arcano.
    tramite una query sql recupero una sequenza di stringhe (praticamente dei numeri che salvo come stringhe) relativi ad uno specifico campo di una tabella ed il risultato lo salvo in un oggetto di tipo vector. per visualizzare i risultati ho la necessità di passare il vector ad una funzione che prende in pasto un vettore di String,per cui quel vector lo dovrò castare a String[]. è qui nasce il problema.
    codice:
    Vector temp = new Vector();
    ....
    String [] finale = new String[temp.size()];
    for (int i=0; i<finale.length; i++) {
           finale[i] = ((String) temp.elementAt(i)).toString();
           System.out.print("finale " +finale[i]) ;
    }
    questo pezzettino di codice mi genera però questo errore:

    java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
    che cavolo sarebbe? sapete indicarmi cosa dovrei modificare nella conversione da vector a String[]? grazie ciao
    Alex

  2. #2
    da l'eccezione postata parrebbe che temp.elementAt(i) restituisce già un array di stringhe e quindi viene sollevata l'eccezione class cast exception in quanto non è un stringa...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47
    non credo sia cosi perche se provo a stampare direttamente il contenuto del vector facendolo iterare su se stesso mi stampa una roba di questo tipo:

    Ljava.lang.String;@ef5502
    Ljava.lang.String;@b61fd1

    in questo caso sto utilizzando questa istruzione:
    finale[i] = (temp.elementAt(i)).toString();
    tanto per la cronaza quelle 2 stringhe in alto dovevano essere 36 e 39
    Alex

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Almeno un elemento dentro a quel Vector è un array di String. Lo dice l'eccezione: [Ljava.lang.String è un array di stringhe.

    Poi, richiamare il toString() su un oggetto String è piuttosto inutile... è già una stringa!

    Questo:
    codice:
    finale[i] = ((String) temp.elementAt(i)).toString();
    è perfettamente equivalente (solo meno performante) a questo:

    codice:
    finale[i] = (String) temp.elementAt(i);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La domanda è... come riempi il Vector?

    PS: c'è qualche particolare ragione per usare la vecchia Java 2 e non la nuova Java 6 (o, almeno, la Java 5)?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47
    e anche stampando direttamente il temp.elementAt(i) genera quella stringa strana...c'è qualche problem nel meccanismo di conversione sicuramente ma non capisco quale sia il problema..aiuto...sono bloccato non posso andare avanti...
    Alex

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è una stringa strana... è la normalissima rappresentazione stringa di un array. Dentro a quel Vector non hai oggetti String (anche se tu credi di sì, ma così non è), ma hai degli array di stringhe.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47
    la domanda è lecita! utilizzo i vector semplicemente perchè ho trovato un' efficente struttura che li utilizza che mi permette di effettuare una connessione a mysql mettendomi a disposizione una serie di metodi gia implementati per interrogare il database.succede però che ora mi serve estrapolare dal vector i singoli campi e non l'intera tupla risultante dalla query...come fare a conertire la tupla in una stringa affinche possa utilizzare i singoli campi??
    Alex

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47
    esatto lo avevo intuito solo che gli array all'interno di ogni cella del vector non riesco a gestirli...
    Alex

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La domanda non era "perchè usi i Vector", ma perchè usi Java 2... anche da Java 5 in avanti ci sono i Vector, ma sono tipizzati e ti riducono questo genere di errori.

    Cosa vuol dire "non riesco a gestirli"? Se ogni elemento di un Vector è un array di stringhe, allora dovrai recuperarlo nel modo corretto.

    codice:
    String[] elemento = (String[]) temp.elementAt(i);
    
    // Poi con l'array ci farai quel che vuoi
    Se usassi Java 5 o 6, dovresti tipizzare il Vector:

    codice:
    Vector<String[]> temp = new Vector<String[]>();
    Oppure, per un array di sole stringe (non array di stringhe):

    codice:
    Vector<String> temp = new Vector<String>();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.