Erro Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 para matriz de arraylist

5 respostas Resolvido
java
A

Boa tarde!

Tenho o seguinte método abaixo que cria uma matriz a partir de elementos de um ArrayList (2 inteiros e 1 string):

private ArrayList alunos = new ArrayList ();
String [][] matriz = new String [alunos.size()][3];

public void criarMatriz() {

if (alunos.size() == 0) {

System.out.print("\nNão há alunos cadastrados!\n\n");

}

else {

for (int i = 0; i < alunos.size(); i++) {

for (int j = 0; j < 3; j++) {

matriz [i][j] = Integer.toString(alunos.get(i).getMatricula());

matriz [i][j] = alunos.get(i).getNome();

matriz [i][j] = Integer.toString(alunos.get(i).getCurso());

}

}

}

}

Entretanto, ao compilar, o erro Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0 aparece. Alguém poderia ajudar?

5 Respostas

S

Ao compilar não, ao executar.

Sua matriz bidimensional tem tamanho 0 na primeira dimensão, então vai dar ArrayIndexOutOfBoundsException ao tentar acessar alguma posição.

A

Oh, desculpe pelo erro entre compilar e executar.

Poderia me explanar melhor sobre o tamanho 0 na primeira dimensão?

S
// aqui você declarou e inicializou um ArrayList, o mesmo está vazio
private ArrayList alunos = new ArrayList ();

// na linha sequinte você declara e inicializa um array bidimensional de String
// passando o tamanho do ArrayList para inicializar a primeira dimensão
//  como o ArrayList está vazio, a primeira dimensão tem tamanho 0
String [][] matriz = new String [alunos.size()][3];
L
Solucao aceita

Você provavelmente está chamando a função cria matriz depois de ter inserido algum valor em alunos. Como o staroski disse você ta definindo a String[][] matriz quando alunos.size() é zero, e está tentando inserir elementos quando alunos.size() > 0, isso que está causando o erro. Uma solução é você instanciar a matriz na hora que chamar o método criaMatriz, até lá deixe matriz como NULL.

A

Entendido! Consegui resolver o problema. Muito obrigado ao leonardodias914 e ao staroski pela ajuda!

Criado 14 de janeiro de 2018
Ultima resposta 15 de jan. de 2018
Respostas 5
Participantes 3