Como instanciar um ArrayList de uma classe para outra instancia especifica de outra classe?

10/02/2019

7

Classe Cliente

import java.util.ArrayList;
import java.util.Arrays;

public class Cliente
{
private int codigoCliente;
private String nome;
private String endereco;
private String telefone;
private String cep;
private String email;
private ArrayList animais = new ArrayList();

public ArrayList<Animal> getAnimais() {
	return animais;
}
public void setAnimais(ArrayList<Animal> animais) {
	this.animais = animais;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public String getTelefone() {
	return telefone;
}
public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String getCep() {
	return cep;
}
public void setCep(String cep) {
	this.cep = cep;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public int getCodigoCliente() {
	return codigoCliente;
}
public void setCodigoCliente(int codigoCliente) {
	this.codigoCliente = codigoCliente;
}



public Cliente(int codigoCliente, String nome, String endereco, String telefone, String cep, String email,
		ArrayList<Animal> animais) {
	super();
	this.codigoCliente = codigoCliente;
	this.nome = nome;
	this.endereco = endereco;
	this.telefone = telefone;
	this.cep = cep;
	this.email = email;
	this.animais = animais;
}




@Override
public String toString() {
	return "Cliente [codigoCliente=" + codigoCliente + ", nome=" + nome + ", endereco=" + endereco + ", telefone="
			+ telefone + ", cep=" + cep + ", email=" + email + ", animais=" + animais.toString() + "]";
}




Classe Animal

import java.util.ArrayList;
import java.util.Arrays;

public class Animal
{
private String nomeAnimal;
private int idadeAnimal;
private String sexoAnimal;
private Especie especieAnimal;
private ArrayList tratamentos;

public Especie getEspecieAnimal() {
	return especieAnimal;
}
public void setEspecieAnimal(Especie especieAnimal) {
	this.especieAnimal = especieAnimal;
}
public ArrayList<Tratamento> getTratamentos() {
	return tratamentos;
}
public void setTratamentos(ArrayList<Tratamento> tratamentos) {
	this.tratamentos = tratamentos;
}
public String getNomeAnimal() {
	return nomeAnimal;
}
public void setNomeAnimal(String nomeAnimal) {
	this.nomeAnimal = nomeAnimal;
}
public int getIdadeAnimal() {
	return idadeAnimal;
}
public void setIdadeAnimal(int idadeAnimal) {
	this.idadeAnimal = idadeAnimal;
}
public String getSexoAnimal() {
	return sexoAnimal;
}
public void setSexoAnimal(String sexoAnimal) {
	this.sexoAnimal = sexoAnimal;
}

public Animal(String nomeAnimal, int idadeAnimal, String sexoAnimal, Especie especieAnimal,
		ArrayList<Tratamento> tratamentos) {
	super();
	this.nomeAnimal = nomeAnimal;
	this.idadeAnimal = idadeAnimal;
	this.sexoAnimal = sexoAnimal;
	this.especieAnimal = especieAnimal;
	this.tratamentos = tratamentos;
}

@Override
public String toString() {
	return "Animal [nomeAnimal=" + nomeAnimal + ", idadeAnimal=" + idadeAnimal + ", sexoAnimal=" + sexoAnimal
			+ ", especieAnimal=" + especieAnimal + ", tratamentos=" + tratamentos + "]";
}


Entao tenho essas duas classes em um relacionamento 1:N,ou seja um Cliente pode ter muitos animais e os animais pertencem a um cliente especifico.

Classe Princinpal

import java.util.ArrayList;
import java.util.Scanner;

public class ClasseChamada {

public static void main(String[] args) 
{
	
	/*Menu
	 * 1- cadastrar Cliente
	 * 2 - Listar Clientes Cadastrados
	 * 3 - Listar Animais por cliente
	 * 4- informaçoes do cliente
	 * 5- Realizar tratamento
	 * 6- listar tramentos por animal
	 * 7- Marcar Consulta
	 * 8- listar historico do animal
	 */
	
	
	//Cliente
		int codigo=0;
		String nome;
		String end;
		String tel;
		String cep;
		String email;
		
		
	//Animal
		String nomeAnimal;
		int idade;
		String sexo;
		
	//Tratamento
		String datainicio;
		String datafinal;
		
	//Consulta
		String dataConsulta;
		String historico;
	//Listas
		ArrayList <Cliente> clientes = new ArrayList();
		ArrayList <Animal> animais = new ArrayList();
		
		//Variavies
		  int op=0;
		  int indice=0;
		  Scanner entrada = new Scanner(System.in);
		
		while(true) 
		{
			System.out.println("------------------------------------------------------");
			System.out.println("1 -Cadastrar Cliente");
			System.out.println("2 - cadastrar Animal");
			System.out.println("3- Lista de clientes ");
			System.out.println("4 -  Marcar Consulta "); 
			System.out.println("5 - Opçao: "); 
			op = entrada.nextInt();
			
			switch(op) 
			{
				case 1:
				{
					
					System.out.println("Codigo Cliente:");
					codigo = entrada.nextInt();
					System.out.println("Nome:");
					nome = entrada.next();
					System.out.println("Telefone:");
					tel = entrada.next();
					System.out.println("Email:");
					email = entrada.next();
					System.out.println("CEP:");
					cep = entrada.next();
					System.out.println("Endereço:");
					end = entrada.next();
					clientes.add(new Cliente(codigo, nome, email, tel, cep, end, animais));
					break;
				}
				case 2:
				{
					
					System.out.println("Digite o codigo do Cliente:");
					codigo = entrada.nextInt();
					if(codigo==Clientes(clientes)) 
					{
						System.out.println("---------Cadastrar Animais-------");
						System.out.println("Nome do Animal:");
						nomeAnimal = entrada.next();
						System.out.println("Idade do Animal:");
						idade = entrada.nextInt();
						System.out.println("Sexo do Animal:");
						sexo = entrada.next();
						animais.add(new Animal(nomeAnimal, idade, sexo, null, null));
						//Problema como adicionar um arraylist em uma posicao especificada de outro ArrayList?;
					}
					
					
				}
				case 3://Lista Clientes
				{
					System.out.println("Lista de clientes");
					for(Cliente x:clientes ) 
					{
						System.out.println(x.getNome()+"\\\\\\\\\\\\\\\\n"+x.getAnimais());
					}
				}
			}
			
			
		}

}

static int Clientes(ArrayList<Cliente> clientes) //Procura o codigo do cliente dentro do ArrayList
{
	for(Cliente x:clientes) 
	{
		return x.getCodigoCliente();
	}
	return 0;
}


tenho essa classe aqui que instancia varios clientes e animais.
crie um ArrayList para instanciar varios clientes
para cada cliente eu tenho ArrayList com uma ou varias instancias de animais,

Depois de cadastrar os clientes
na hora de listar (pedi para listar somente o nome e os animais do cliente)

A saida sem Cadastrar os animais é essa:
Maria
[ ]
Joao
[ ]

até ai beleza,ta cadastrando os clientes,mas quando cadastro os animais para dois clientes especificos
a saida é

Maria
[ Animal [nomeAnimal=Brutos, idadeAnimal=2, sexoAnimal=M, especieAnimal=null, tratamentos=null] ]
Joao
[ Animal [nomeAnimal=Brutos, idadeAnimal=2, sexoAnimal=M, especieAnimal=null, tratamentos=null] ]

ele retorna a mesma instancia de Animal

o programa instancia a classe animal e coloca no arraylist,mas parece que so instancia uma vez a classe,entao o problema é como instanciar a classe Animal para um cliente espefico
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira