Estou com dificuldades em resolver um problema no meu código, o código compila, mas ao correr dá o erro Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0
at Metropolitano.main(Metropolitano.java:37)
ou seja, na linha que diz lista[i] = new Utente(“XPTO”+i);
o meu objectivo é criar uma lista com objectos do tipo Utente e outra com objectos do tipo UtentePasse e depois percorrer essas listas, chamando os métodos a cada elemento.
Alguém me consegue ajudar ?
public static void main(String[] args){
_lt = new Metropolitano();
int i=0;
Utente lista[] = {};
UtentePasse lista1[] = {};
int id = (66%10);
while (i<8){
lista[i] = new Utente("XPTO"+i);
lista[i].obtemNome();
lista[i].viaja(id);
i++;
}
while (i>7 && i<13){
lista1[i]= new UtentePasse("XPTO"+i);
lista1[i].obtemNome();
lista1[i].viaja(id);
i++;
}
Utente lista[] = new Utente[0];
UtentePasse lista1[] = new UtentePasse[0];
ou seja, como o array tem 0 elementos, e arrays não aumentam sozinhos de tamanho, então você vai obter um ArrayIndexOutOfBoundsException com certeza. Dimensione seu array com algum valor grande, suficiente para seu teste, ou então (recomendado) use List<Utente> lista = new ArrayList<Utente>() e assim por diante. (Note que como um List não é um array você não pode usar a notação [] para acessar elementos.
PS: Poste os códigos entre as tags [code ] e [/code ]
PS2: Quando for abrir um novo tópico escreva um assunto menos vago
E o erro está que quando você que você precisa indicar quantas posições vão ter sua Array
Então mude isso:
Utente lista[] = {};
UtentePasse lista1[] = {};
para algo como
Utente lista[] = new Utente[100];
UtentePasse lista1[] = new UtentePasse[100];
Onde 100 é quantas posições a Array vai ter.
[quote=Claudio.R]Já atribui uma dimensão aos vectores e realmente, deixei de ter o erro, o problema agora é que ele não preenche o vector com os utentes com o while.
while (i<6){
lista[i] = new Utente("XPTO"+i);
O construtor do Utente recebe uma String nome, logo, com este código ele deveria colocar um utente em cada posição do vector… ou não ?
[/quote]
Sim isso deveria preencher.
E já que você declarou um tamanho você pode fazer o while assim
int i = 0;
while(i<lista.length){
lista[i] = new Utente("XPTO"+i);
i++;
}