Newsgroup: it.comp.java
Titolo: Arrays

Salve a tutti, lo so che la domanda vi sembrerà una banalità, ma abbiate
pazienza... sono una neofita!
Vorrei sapere se in Java dato un array di interi esiste un metodo per sapere
fino a che indice è stato riempito oppure un metodo che mi restituisca il
primo indice libero.
Grazie
Elena

mioarray.length
N.B. non è un metodo! Perciò non mioarray.length().
Ciao

Non è una domanda banale, Elena.
Intanto quello che ti dico è valido per un array vero e proprio, non per un
vettore (vedi più sotto).
Intanto dipende da come inizializzi l'array. Diciamo che se lo inizializzi
così:
int[] x; (x.length dà un'eccezione di tipo null pointer)
L'array x è inizialmente un oggetto inizializzato a null e il compilatore
non ti permette di utilizzarlo finché non chiami, diciamo:
x = new int[5];
Allora avrai x[0]=0, x[1]=0, ecc. x.length sarà 6.
Quando tu "riempi" l'array, semplicemente cambi il valore di ogni membro.
Prima del new, non puoi "riempirlo" perché non esiste. Quindi, a meno che tu
non vada a testare se ogni membro è zero (cosa che potrebbe nemmeno avere
senso, perché magari per te 0 è un valore che ha un significato), non esiste
modo per sapere "fino a che punto l'array è stato riempito").
Potresti tenerne traccia ad esempio in questo modo:
for (short j=0; j<3; j++)
{
    x[j] = qualcosa; // qualcosa è un numero intero
}
System.out.print("Ho riempito fino a "+j);
Ma fa abbastanza schifo.
In realtà il tuo problema probabilmente presuppone che tu non sappia "a
priori" quanto sarà grande il tuo array.
In questo caso devi per forza usare un vettore. Ce ne sono tanti tipi,
quello più facile da usare (in Java2) è ArrayList. Solo che ArrayList è un
vettore di "oggetti" e non di tipi primitivi, come per esempio è "int".
Quindi userai un wrapper per gli interi, per esempio la classe
java.lang.Integer.
ArrayList interi = new ArrayList();
for (short j=0; j<3; j++)
{
    interi.add(new Integer(qualcosa)); // qualcosa è un numero intero
}
Adesso per sapere quanti "interi" contiene il vettore farai:
interi.size();
Per estrarre gli interi dal vettore:
Iterator i = interi.iterator();
while (i.hasNext())
{
    int i = (Integer)i.next();
    System.out.println(i);
}
Spero di aver scritto codice compilabile (comunque l'idea è quella).
Ciao,
Alessio.
"Elena" <x@x.x> wrote in message news:9ackqa$18qm$1...@stargate1.inet.it...


Grazie mille.
Onde evitare di porre domande inutili, volevo sapere dove posso trovare la
documentazione relativa ai metodi e alle proprietą degli arrays, infatti ho
provato a cerare la proprietą length nelle API Java, ma non sapevo dove
andare a cercarla.
Thanks! :-)



Ciao,
una array di tipi primitivi viene inizializzato con i valori "empty"
di quel tipo che per gli interi è zero.
Mi pare di capire che vuoi usare array per implementare strutture dati
dinamiche, per le queali è più indicato l'uso di java.util.Vector.
Umberto

Scusate l'intromissione ma leggendo questo dibattito mi sono sorte alcune
domande: dove trovo l'elenco di tutte le proprierà di un array? Nella doc
delle API, come diceva Elena, length come proprietà non c'è... E poi: è
corretto dire che un array che contiene primitivi è comunque un object?
Grazie, ciao.

 wrote in message
news:9Tqy6.122932$lj4.3...@news6.giganews.com...


corretto dire che un array che contiene primitivi è comunque un object?
Si'. Nel caso di tipi primitivi, la sua classe ha nome [I per interi,
[L per long, etc. Sempre JLS, o un programmino che invoca 
getClass().getName() su un'array. 
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun





Grazie per le spiegazioni molto 
esaurienti.


:-))))


Ciao.