Newsgroup: it.comp.java
Titolo: Problema nell'ingrandire un array

Ciao a tutti!
Non riesco ad ingrandire un array ho provato ad usare un metodo resize:
private static long[] resize(long[] numtel, int newLength)
    {
        long[] newArray = new long[newLength];
        if(newLength > numtel.length)
            System.arraycopy(numtel, 0, newArray, 0,  numtel.length);
        else
            System.arraycopy(numtel, 0, newArray, 0,  newLength);
        return newArray;
    }
e nel main ho scritto:
if (i == numtel.length)
                {
                    numtel = resize(numtel, 2*numtel.length);
                }
                numtel[i++] = numero;
 ma mi va sempre in ArrayIndexOutOfBoundsException
ho provato a far cosě:
if ((numtel.length-1) <= i)
                {
                    numtel[i] = numero;
                }
                else// devo ingrandire l'array
                {
                    long[] newArray = new long[2*numtel.length];
                    System.arraycopy(numtel, 0, newArray, 0, 
numtel.length);
                    numtel = newArray;
                    numtel[i] = numero;
                }
utilizzando cosě un array temporaneo dove copio  i miei dati li dentro e poi 
dico al mio aray numtel di puntare ad esso, ma niente mi da sempre 
ArrayIndexOutOfBoundsException
Non riesco proprio a capire come fare...
Qualcuno che mi possa essere d'aiuto?
Albe

 ma mi va sempre in ArrayIndexOutOfBoundsException
Ma quella 'i' quanto vale?
Ovvero se
numtel.length = 10
e i = 11
l'if non scatta e quindi succede
numtel[12] -> eccezione

 numtel[12] -> eccezione
"i" parte da zero e poi ad ogni ciclo lo aggiorno quante volte che 
inserisco un numero.
all'inizio creo un array di 1 elemento po se inserisco 2 numeri lo aumento 
al doppio della capacità iniziale in modo tale che mi stiano dentro altri 
numeri e così via aumentandolo il doppio...
quindi i aumenta di uno ad ogni numero che inserisco
nn so se mi son spiegato meglio 

 Albe
IMHO ti converrebbe implementare una lista..
-- 
www.iuz-lab.info

 if (i == numtel.length)
Rispondo senza pensare (magari dico una stupidaggine)... prova con 
if(i==numtel.length-1)
Saluti
CarMas

"CarMas" ha scritto:

Mah nn saprei, xò quella parte di codice l'avevo copiata dal prof, ma nn mi 
funziona bah.... 

Ci son riuscito bastava un try catch, il problema è ke non mi entrava 
nell'else, ora col try catch funziona tutto 

 nell'else, ora col try catch funziona tutto 
????
Mi posti il codice, che voglio capire anch'io?
Saluti
CarMas

 CarMas
certo:
try
               {
                   numtel[i] = numero;
               }
catch(ArrayIndexOutOfBoundsException e)
               {
                   int ValueSize = numtel.length;
                   long[] newArray = new long[2*ValueSize];
                   System.arraycopy(numtel, 0, newArray, 0,  ValueSize);
                   numtel = new long[newArray.length];
                   System.arraycopy(newArray, 0, numtel, 0,  ValueSize);
                   numtel[i] = numero;
               } 

albe wrote:

ricorda che usare le eccezioni non dovrebbero essere utilizzate in questo
modo..
una eccezione deve essere lanciata solo in caso di errore e qui e'
decisamente non necessaria..
-- 
www.iuz-lab.info
Home Politics - 
http://www.iuz-lab.info/homepolitics.php