[RESOLVIDO] Cadastrar Objetos em array

Olá pessoal, será que vocês poderia me ajudar nesse código? O programa cadastra os clientes e cachorros de uma PetShop em um array, mas, quando uso a opção Cadastrar, o último cliente cadastrado fica em todas as outras posições do array também!!! O que pode ser? :?

Classe Cadastro

package CadPetShop;

import javax.swing.JOptionPane;

public class Cadastro {

	static Cliente clientes[] = null;
	static Cachorro cachorros[] = null;
	static String lista;
	static int confirma = -1;
	static int j = 0;

	public static void main(String[] args) {

		String op = "";
		int opcao = -1;

		do {

			op = JOptionPane.showInputDialog("SISTEMA PETSHOP - v1.0:\n\n"
					+ "1 ~> Cadastrar Clientes.\n"
					+ "2 ~> Consultar Clientes.\n"
					+ "3 ~> Cadastrar Cachorros.\n"
					+ "4 ~> Consultar Cachorros.\n" + "5 ~> Sair.\n\n");

			if (op == null) {

				op = "0";

			}

			opcao = Integer.parseInt(op);

			if (opcao == 1) {

				CadastrarCliente();

			} else if (opcao == 2) {

				ConsultarCliente();

			} else if (opcao == 3) {

				CadastrarCachorros();

			} else if (opcao == 4) {

				ConsultarAnimais();

			} else if (opcao == 5 || opcao == 0) {

				Sair();

			} else {

				JOptionPane.showMessageDialog(null, "Opção Inválida!!!");

			}

		} while (confirma != 0);

	}

	public static void CadastrarCliente() {

		int QuantClient;

		String Quant = JOptionPane
				.showInputDialog("- CADASTRAR CLIENTE:\n\nQuantos Clientes Deseja Cadastrar: ");

		if (Quant == null) {

			Quant = "0";

		}

		QuantClient = Integer.parseInt(Quant);

		clientes = new Cliente[QuantClient];

		for (int i = 0; i < clientes.length; i++) {

			clientes[i] = new Cliente();

		}

		for (int i = 0; i < QuantClient; i++) {

			clientes[i]
					.setNome(JOptionPane
							.showInputDialog("- CADASTRAR CLIENTE:\n\nDigite o Nome do Cliente: ("
									+ (i + 1) + "/" + QuantClient + ")"));

			clientes[i]
					.setDataDeNasc(JOptionPane
							.showInputDialog("- CADASTRAR CLIENTE:\n\nDigite a Data de Nascimento do Cliente: "
									+ clientes[i].getNome()
									+ "\nOBS: Use o padrão dia/mês/ano\n\n"));

		}

		for (int i = 0; i < QuantClient; i++) {

			JOptionPane.showMessageDialog(null, clientes[i].getNome());

		}

		JOptionPane.showMessageDialog(null, "Clientes Cadastrados!");

	}

	public static void ConsultarCliente() {

		if (clientes == null) {

			JOptionPane
					.showMessageDialog(null,
							"- CONSULTAR CLIENTE:\n\nVocê precisa cadastrar pelo menos 1 Cliente!\n\n");

		} else {

			int total = 1;
			lista = "";

			for (int i = 0; i < clientes.length; i++) {

				lista += "Cliente " + (i + 1) + "\n";
				lista += "Nome: " + clientes[i].getNome() + "\n";
				lista += "Data de Nascimento: " + clientes[i].getDataDeNasc()
						+ "\n";
				lista += "\n\n";
				total++;

			}

			JOptionPane.showMessageDialog(null, "- CONSULTAR CLIENTE:\n\n"
					+ "Total de " + (total - 1) + " Clientes Cadastrados:\n\n"
					+ lista);

		}

	}

	public static void CadastrarCachorros() {

		// Implementar

	}

	public static void ConsultarAnimais() {
		
		// Implementar

	}

	public static void Sair() {

		confirma = JOptionPane.showConfirmDialog(null,
				"Quer mesmo Sair do Programa?");

	}

}

Classe Cliente

package CadPetShop;

public class Cliente {
	
	private static String nome;
	private static String dataDeNasc;
	
	public static String getNome() {
	
		return nome;
		
	}
	
	public static void setNome(String name) {
		
		nome = name;
			
	}

	public static String getDataDeNasc() {
		
		return dataDeNasc;
	
	}
	
	public static void setDataDeNasc(String date) {
		
		dataDeNasc = date;
		
	}

}

Classe Cachorro

package CadPetShop;

public class Cachorro {
	
	private static String apelido;
	private static String raca;
	private static String dataDeNiver;
	
	public static String getApelido() {
		
		return apelido;
		
	}
	
	public static void setApelido(String apelido1) {
		
		apelido = apelido1;
			
	}

	public static String getRaca() {
		
		return raca;
	
	}
	
	public static void setRaca(String raca1) {
		
		raca = raca1;
		
	}
	
	public static String getNiver() {
		
		return dataDeNiver;
	
	}
	
	public static void setNiver(String niver) {
		
		dataDeNiver = niver;
		
	}

}

Olá, bom dia. O seu código funcionaria perfeitamente se os métodos e atributos da classe Cliente não fossem estáticos. Variáveis estáticas pertencem à classe, e não aos objetos da classe. Os atributos estáticos da classe são criados somente uma vez. Quando vc estancia novo objeto, não é criado novos atributos pra ele. O Objeto é apenas uma ponte até o atributo que pertence à classe. Veja:

//o método setNome() é estático, neste caso vc estaria alterando o nome da variável da classe e não do objeto em si. clientes[i] .setNome(JOptionPane .showInputDialog("- CADASTRAR CLIENTE:\n\nDigite o Nome do Cliente: (" + (i + 1) + "/" + QuantClient + ")"));

[quote=Ederson Lima]
Classe Cliente

package CadPetShop;

public class Cliente {
	
	private String nome;
	private String dataDeNasc;
	
	public  String getNome() {
	
		return nome;
		
	}
	
	public void setNome(String name) {
		
		nome = name;
			
	}

	public String getDataDeNasc() {
		
		return dataDeNasc;
	
	}
	
	public void setDataDeNasc(String date) {
		
		dataDeNasc = date;
		
	}

}

Valeu mesmo walissongpi, nunca imaginaria que o problema estaria aí!

Me tirou uma grande dúvida.

abs

Amigo, ja que a duvida foi solucionada, coloca [Resolvido] no topico.

Abraços

[quote=Ederson Lima]Valeu mesmo walissongpi, nunca imaginaria que o problema estaria aí!

Me tirou uma grande dúvida.

abs[/quote]

blz. :smiley: