Olá, venho por meio deste pedir auxílio em um tópico que creio não ter entendido muito bem. Sou relativamente novo em Java e estou resolvendo um exercício onde preciso criar uma matriz de objetos e em certos índices do array externo devo criar uma instância do objeto. Segue o código utilizando String como o “Objeto” a fim de ficar mais explícito/legível:
String[][] mat = new String[3][];
mat[0] = new String[5];
mat[1] = null;
mat[2] = new String[5];
for(int i = 0; i < mat.length; i++) {
for(int j = 0; j < mat[i].length; j++) {
if(i < 1 || i > 1) {
mat[i][j] = new String("asd");
}
}
}
Pois então, não consigo entender o porquê de no for aninhado ocorrer a exception “ArrayIndexOutOfBounds”. Não consegui achar nenhum tópico relativo a isto no fórum, por isso peço uma “luz”. Desde já obrigado!
Em seu código ocorre a exceção ‘NullPointerException’ e não ‘ArrayIndexOutOfBounds’.
Seu código está correto, porém o erro ocorre porque mat[1] é nulo. E quando, dentro do segundo ‘for’, tentar acessar mat[i].length, sendo ‘i’ a posição 1 do array, não será possível por não existir uma dimenssão criada para mat[1] .
Por que não faz sentido definir um vetor como sendo capaz de contemplar 0 elementos?
Simples, se o objetivo de um vetor é ser abastecido por um número N de elementos, declarar e instanciar um vetor assim
int vetor[] = new int[0];
É completamente sem sentido.
Como vai fazer
int[0] = 10; //Aí sim o ArrayIndexOutOfBoundsException