Erro - Iteração com Matriz de Objetos bidimensional

5 respostas
R
int x=0;
	int y=0;
	for (Object objX[] : repObj) {
		for (Object ObjY : objX) {
		System.out.println(x+"-"+y+"-"+repObj[x][y].getClass().getName());
		y++;
		}
		x++;
		y = 0;
	}

Chega a mostrar todas classes mas apresenta um erro de nullpointerexception também. Alguém sabe o que pode ser ?

5 Respostas

E

A resposta para um NullPointerException é sempre a mesma - debugue seu código, e veja o que ficou nulo (se é repObj[x] ou repObj[x][y]). Depois, veja no seu código onde é que você esqueceu de inicializar repObj[x] ou repObj[x][y].

R
public class TestaRepObj {

private static Object[][] repObj = new Object[4][4];

public static void main(String[] args) {

repObj[0][0] = new Clientes[50];

repObj[0][1] = new Pedidos[50];

repObj[0][2] = new Vendas[10][50];

repObj[0][3] = new Vendedores[50];
repObj[1][0] = new Clientes[50];
	repObj[1][1] = new Pedidos[50];
	repObj[1][2] = new Vendas[10][50];
	repObj[1][3] = new Vendedores[50];

	repObj[2][0] = new Clientes[50];
	repObj[2][1] = new Pedidos[50];
	repObj[2][2] = new Vendas[10][50];
	repObj[2][3] = new Vendedores[50];

	int x=0;
	int y=0;
	for (Object objX[] : repObj) {
		for (Object ObjY : objX) {
		System.out.println(x+"-"+y+"-"+repObj[x][y].getClass().getName());
		y++;
		}
		x++;
		y = 0;
	}

Não era pra dar problema … abaixo, a saída:

Exception in thread main java.lang.NullPointerException

at br.com.remtecnology.TestaRepObj.main(TestaRepObj.java:25)

0-0-[Lbr.com.remtecnology.Clientes;

0-1-[Lbr.com.remtecnology.Pedidos;

0-2-[[Lbr.com.remtecnology.Vendas;

0-3-[Lbr.com.remtecnology.Vendedores;

1-0-[Lbr.com.remtecnology.Clientes;

1-1-[Lbr.com.remtecnology.Pedidos;

1-2-[[Lbr.com.remtecnology.Vendas;

1-3-[Lbr.com.remtecnology.Vendedores;

2-0-[Lbr.com.remtecnology.Clientes;

2-1-[Lbr.com.remtecnology.Pedidos;

2-2-[[Lbr.com.remtecnology.Vendas;

2-3-[Lbr.com.remtecnology.Vendedores;
E

repObj[2][3] existe, mas repObj[3][3] não.

Seu código está tentando acessar repObj[3][3] :frowning:

R

Desculpe … falha minha … acabei de ver meu vacilo

Obrigado

E

Uma coisa que não entrou no JDK 8 foi uma coisa que existe no Groovy mas foi rejeitada. A ideia é você ter um operador “?.” que é igual ao “.”, mas em vez de criar um NullPointerException se o lado esquerdo for null, simplesmente retorna null.

O seu exemplo seria, se essa modificação na linguagem tivesse entrado:

System.out.println(x+"-"+y+"-"+repObj[x][y]?.getClass().getName());
Criado 24 de junho de 2013
Ultima resposta 24 de jun. de 2013
Respostas 5
Participantes 2