Não está imprimindo todos objetos

2 respostas Resolvido
java
buranello

Estou fazendo uma lista da loiane.training e estou com uma dúvida.
Tenho uma classe mae Contribuinte, 2 filhas PessoaFisica e PessoaJuridica, e uma 4 classe de teste onde estou criando 3 cadastro de cada e imprimindo o nome e o imposto pago, dai por isso criei um vetor da classe mae de 6 posicoes , mas apenas 1 de pj e pf, e fui setando e guardando dentro do vetor … masna hora de imprimir ele imprime apenas a última posição de cada.

public class Teste {

public static void main (String[] args){

	System.out.println("Testando");
	
	Contribuinte [] pessoas = new Contribuinte[6];

	PessoaFisica pf = new PessoaFisica();
	
	pf.setNome("Jose");
	pf.setRenda(1500);
	pf.definirAliquota(pf.getRenda());
	pf.setImposto((pf.getAliquota()*pf.getRenda()));
	pessoas[0] = pf;

	pf.setNome("Maria");
	pf.setRenda(2500);
	pf.definirAliquota(pf.getRenda());
	System.out.println(pf.getAliquota());
	pf.setImposto((pf.getAliquota()*pf.getRenda()));
	pessoas[1] = pf;
	System.out.println("Nome:"+ pessoas[1].getNome() + "\n" + "Imposto:"+ pessoas[1].getImposto() + "\n\n");
	
	pf.setNome("Joaquim");
	pf.setRenda(3500);
	pf.definirAliquota(pf.getRenda());
	pf.setImposto((pf.getAliquota()*pf.getRenda()));
	pessoas[2] = pf;

	PessoaJuridica pj = new PessoaJuridica();
	
	pj.setNome("Jose SA");
	pj.setRenda(1500);
	pj.setImposto((pj.getAliquota()*pj.getRenda()));
	pessoas[3] = pj;

	pj.setNome("Maria SA");
	pj.setRenda(2500);
	pj.setImposto((pj.getAliquota()*pj.getRenda()));
	pessoas[4] = pj;

	pj.setNome("Joaquim SA");
	pj.setRenda(5500);
	pj.setImposto((pj.getAliquota()*pj.getRenda()));
	pessoas[5] = pj;

	System.out.println(pessoas.length);
	for(int i=0; i<pessoas.length;i++){
  		System.out.println(i);

		System.out.println("Nome:"+ pessoas[i].getNome() + "\n" + "Imposto:"+ pessoas[i].getImposto() + "\n\n");
	}
	
          /*System.out.println("Nome:"+ pessoas[0].getNome() + "\n" + "Imposto:"+ pessoas[0].getImposto() + "\n\n");
	System.out.println("Nome:"+ pessoas[1].getNome() + "\n" + "Imposto:"+ pessoas[1].getImposto() + "\n\n");
	System.out.println("Nome:"+ pessoas[2].getNome() + "\n" + "Imposto:"+ pessoas[2].getImposto() + "\n\n");
*/}
}

2 Respostas

Jonas_B_a_r_r_o_s
Solucao aceita

Não jovem. Não é que está imprimindo só o ultimo.
O que acontece é que você está so criando um objeto de PessoaFisica, então você está setando os valores, mas acontece é que está sobrescrevendo com outros.

Você teria que criar um objeto EX:

PessoaFisica pf1 = new PessoaFisica();
pf1.setNome("Jose");

//para armazenar outra pessoa, tem que criar outro objeto
PessoaFisica pf2 = new PessoaFisica();
pf2.setNome("Maria");
buranello

Obrigado, fiz a sua sugestão e deu certo.
Eu pensei que depois que eu setei e guardei dentro do vetor poderia utilizar o mesmo objeto e setar novamente e guardar ele que não alteraira o guardado anteriormente.
Obrigado mesmo.

Criado 26 de julho de 2016
Ultima resposta 27 de jul. de 2016
Respostas 2
Participantes 2