Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] Errore inserimento Vettore

    Salve a tutti,

    ho un piccolo problema, attraverso un ciclo for inserisco degli oggetti in un vettore, al primo passaggio è tutto ok, mentre al secondo mi da il seguente errore:

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 9 > 1
    at java.util.Vector.insertElementAt(Unknown Source)
    at java.util.Vector.add(Unknown Source)

    Help me......
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    puoi mostrare il codice? altrimenti e' un po' difficile capire come mai genera l'eccezione

    sembra che usi il metodo insert, specificando la posizione 9, che ovviamente non esiste.

  3. #3

    .

    In effetti ho la necessità di inserire il secondo oggetto nella posizione 9,
    ecco il codice

    Vector mioVettore = new Vector();

    for(int i = 0;i <27; i+= 9){

    mioVettore(i, "primo");
    }


    Purtoppo devo mantenere un determinato ordine di inserimento, quindi ho nove oggetti da inserire +volte, e so che nella posizione 0 , 9 , 18 .ecc.... andrà un determinato tipo di oggetto, ecco perchè ho la necessità di rispettare le posizioni.

    Ho pensato ad una alternativa al Vector, di utilizzate un Hashtable, infatti cosi mi funziona, ma vorrei capire xchè non è possibile inserire nel Vector in una posizione specifica.

    Grazie
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  4. #4
    Prima di tutto ti avviso che hai sbagliato a premere e hai creato una nuova discussione al posto di rispondere alla precedente...eheheh....

    Allora la risposta al tuo perchè è semplice, il Vector non è come gli array è una struttura dinamica, che può contenere qualsiasi tipo di oggetto.
    Essendo dinamico ogni volta che crei un "cassetto" con il metoto add() semplicemente lui aumenta la dimensione del vector che all'inizio non possiede cassetti quindi il tuo cassetto 9 all'inizio non esiste, tu aggiungi il primo e poi cerchi di mettere un numero nel cassetto 9 che non è ancora stato creato. Per poter fare questa operazione prima dovresti creare i cassetti dalla posizione 2 alla posizione 9.
    Spero ciò che ho scritto non sia troppo caotico, la cosa è più semplice di quanto lo sia scriverla...

    Tra l'altro nel codice che hai postato non usi nemmeno il metodo add per aggiungere l'elemento al Vector... :master:

    Per mettere i dati nelle posizioni 0, 9, 18 io farei così:

    codice:
    for(int i=0; i<27; i++)
       if ((i==0) || (i==9) || (i==18))
          mioVettore.add(primo);
       else
          mioVettore.add(null);
    Successivamente se devi aggiungere qualcosa in un cassetto che già hai creato qui (ad esempio nel cassetto 3) puoi usare il metodo set:

    codice:
    mioVettore.set(3, valoreDaInserire);
    Sicuramente poi ci sarà anche un modo più rapido ma al momento di prima mattina non mi viene in mente.

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  5. #5
    ok.......chiudo scusa x aver creato un nuovo messaggio.

    Grazie x avermi chiarito le idee sui vettori.
    E' stato un errore di battitura la mancanza dell 'add.

    Grazie
    Omme se nasce e brigante se more
    Ma fino all’ultimo avimma sparà
    E si murimm menate nu sciore
    E na preghiera pè sta libertà

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,314

    Moderazione

    Ho unito le discussioni. Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Originariamente inviato da seatleon
    ok.......chiudo scusa x aver creato un nuovo messaggio.

    Grazie x avermi chiarito le idee sui vettori.
    E' stato un errore di battitura la mancanza dell 'add.

    Grazie
    Di niente

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

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 © 2024 vBulletin Solutions, Inc. All rights reserved.