Instanciando uma matriz como atributo dentro de uma classe

4 respostas
R
public class ClienteT {

public int Codigo;

public String Nome;

public String Endereco;

}
public class AbreCcT {

public String Agencia;

public int CodigoCc;

public ClienteT[] clienteT = new ClienteT[1];
public AbreCcT(int npos, String Agencia, int CodigoCc, int Codigo, String Nome) {  // obrigar a entrar com os dados menos o Endereço da classe Cliente que não é obrigatório
	this.Agencia = Agencia;
	this.CodigoCc = CodigoCc;
	this.clienteT[npos].Codigo = Codigo;
	this.clienteT[npos].Nome = Nome;
}

}

public class TestaCc2T {

public static void main(String[] args) {

AbreCcT cc = new AbreCcT(0,Itaú, 12345, 1, Ricardo);
cc.clienteT[0].Endereco = "Rua 1, 1";
	
	System.out.println(cc.Agencia);
	System.out.println(cc.CodigoCc);
	System.out.println(cc.clienteT[0].Codigo);
	System.out.println(cc.clienteT[0].Nome);
	System.out.println(cc.clienteT[0].Endereco);
}

}

Erro ::: Exception in thread “main” java.lang.NullPointerException

4 Respostas

renamed
public ClienteT[] clienteT = new ClienteT[1];

Instancia o vetor, não cada cliente…

Antes de setar os valores do cliente a partir daqui

this.clienteT[npos].Codigo = Codigo;

Você precisa fazer

this.clienteT[npos] = new ...
R

OK, funcionou … porém a matriz contém até 2 elementos. Como Faço para dar um new … somente quando houver necessidade ?

public AbreCcT(int npos, String Agencia, int CodigoCc, int Codigo, String Nome) {
	this.Agencia = Agencia;
	this.CodigoCc = CodigoCc;
	this.clienteT[npos] = new ClienteT();
	this.clienteT[npos].Codigo = Codigo;
	this.clienteT[npos].Nome = Nome;
}

npos = 0 OK, npos = 1 nullpointerexception ;

Muito obrigado

R

Mudei um pouco meu raciocínio …

public class ClienteT {

public int Codigo;

public String Nome;

public String Endereco;
public ClienteT(int Codigo, String Nome) {
	this.Codigo = Codigo;
	this.Nome = Nome;
}

}

public class AbreCcT {

public String Agencia;

public int CodigoCc;

public ClienteT[] clienteT = new ClienteT[1];
public AbreCcT(String Agencia, int CodigoCc) {
	this.Agencia = Agencia;
	this.CodigoCc = CodigoCc;
}

}

public class TestaCc2T {

public static void main(String[] args) {

AbreCcT cc = new AbreCcT(Itaú, 12345);
cc.clienteT[0] = new ClienteT(0,"Ricardo");
	cc.clienteT[0].Endereco = "Rua 1, 1";

// cc.clienteT[1] = new ClienteT(1,“Roberto”);

//		cc.clienteT[1].Codigo = 1;

//		cc.clienteT[1].Nome = “Roberto”;

//		cc.clienteT[1].Endereco = “Rua 1, 1”;

System.out.println(cc.Agencia);

System.out.println(cc.CodigoCc);

System.out.println(cc.clienteT[0].Codigo);

System.out.println(cc.clienteT[0].Nome);

System.out.println(cc.clienteT[0].Endereco);

//		System.out.println(cc.clienteT[1].Codigo);

//		System.out.println(cc.clienteT[1].Nome);

//		System.out.println(cc.clienteT[1].Endereco);

}

}

Assim funciona numa boa … porém, basta eu descomentar os [1]s que dá erro de indexofbounds ;

Obrigado

R

Já descobri … foi burrice minha … sem comentários ;

Isso é que dá almoçar tarde , Obrigado.

Criado 8 de junho de 2013
Ultima resposta 8 de jun. de 2013
Respostas 4
Participantes 2