Ajuda com programa java

1 resposta
Thales_Fernando

Observe o diagrama de classes a seguir. Existe um relacionamento com multiplicidade 1 para *. Construa em Java, as classes Cliente e Animal, criando os atributos de relacionamento para ambas as classes. Na classe com relacionamento n-ário, criar o atributo de relacionamento como uma coleção de qualquer realização da interface List. Devem ser criados todos os métodos necessários para adicionar e remover elementos da coleção. Criar uma classe chamada programa para fazer a entrada de dados na coleção e listar os objetos armazenados a partir de um iterator ou for each.

este e o codigo que eu fiz ,mais quando executa o cadastro de animal de cliente, ele está permitindo digitar apenas uma vez o nome animal, depois quando vou cadastrar o próximo ele pula direto para ano. Não sei o que está acontecendo Aquem porte me ajudar com esse problema no código?

Código da Classe Animal

package dominino;

public class Animal {
	private String nome,anoNascimento, sexo, especie, raca;
	private Cliente cli;
	
	public Animal(String nome, String anoNascimento, String sexo, String especie, String raca) {
		this.nome = nome;
		this.anoNascimento = anoNascimento;
		this.sexo = sexo;
		this.especie = especie;
		this.raca = raca;
	}
	
	public String getNomeA() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getAnoNascimento() {
		return anoNascimento;
	}
	
	public void setAnoNascimento(String anoNascimento) {
		this.anoNascimento = anoNascimento;
	}
	
	public String getSexo() {
		return sexo;
	}
	
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	
	public String getEspecie() {
		return especie;
	}
	
	public void setEspecie(String expecie) {
		this.especie = expecie;
	}
	
	public String getRaca() {
		return raca;
	}
	
	public void setRaca(String raca) {
		this.raca = raca;
	}
	
	public void setCli(Cliente cli) {
		this.cli = cli;
	}
}

Código da Classe Cliente

package dominino;

import java.util.ArrayList;
import java.util.Vector;

public class Cliente {
	private String cpf, nome, endereco, telefone;
	private ArrayList<Animal> listaAnimal;
	
	public Cliente(String cpf, String nome, String endereco, String telefone) {
		this.cpf = cpf;
		this.nome = nome;
		this.endereco = endereco;
		this.telefone = telefone;
		listaAnimal = new ArrayList<Animal>();
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	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 void addAnimal(Animal novoAnimal) {
		if (listaAnimal.contains(novoAnimal)) 
			return;
		else {
			listaAnimal.add(novoAnimal); 
			novoAnimal.setCli(this);  
		}
	}
	
	public void removeAnimal (Animal exAnimal) {
		if (!listaAnimal.contains(exAnimal))
			return;
		else {
			listaAnimal.remove(exAnimal);
			exAnimal.setCli(null);
		}
	}
	
	public ArrayList getListaAnimal() { 
		return listaAnimal;
	}
}

Código da Classe Programa

package controle;

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

import dominino.Animal;
import dominino.Cliente;

public class Programa {
	public static void main(String[] args) {
		Scanner leia = new Scanner(System.in);
		
		String nomeA,anoNascimento, sexo, especie, raca ;
		char resp = 'S';
		
		System.out.println("Digite o CPF do Cliente: ");
		String cpf = leia.nextLine();
		System.out.println("Digite o Nome do Cliente: ");
		String nome = leia.nextLine();
		System.out.println("Digite o endereço do Cliente: ");
		String endereco = leia.nextLine();
		System.out.println("Digite o telefone do Cliente: ");
		String telefone = leia.nextLine();
		
		Cliente cli = new Cliente (cpf, nome, endereco, telefone);
		System.out.println("\nCADASTRO DOS ANIMAIS DO CLIENTE");
		
		do {
			System.out.println("Digite o Nome do Animal: ");
			nomeA = leia.nextLine();
			System.out.println("Digite o ano do nascimento do Animal: ");
			anoNascimento = leia.nextLine();
			System.out.println("Digite o sexo do Animal: ");
			sexo = leia.nextLine();
			System.out.println("Digite a espécie do Animal: ");
			especie = leia.nextLine();
			System.out.println("Digite a raça do Animal: ");
			raca = leia.nextLine();
			
			Animal animal = new Animal (nomeA, anoNascimento, sexo, especie, raca);
			
			cli.addAnimal(animal);
				
			System.out.println("Deseja adicionar outro animal? <S/N>:");
			resp = leia.next().charAt(0);
		} while ((resp == 'S') || (resp == 's'));
		
		System.out.println("\n\nRELATÓRIO DE ANIMAIS DO (A) CLIENTE" + cli.getNome()); 
		ArrayList<Animal> lista = cli.getListaAnimal();
		
		for (Animal animalTemp : lista)
			System.out.println(animalTemp.getNomeA() + " - " + animalTemp.getAnoNascimento() + " - " + animalTemp.getSexo()+ " - " + animalTemp.getEspecie()+ " - " + animalTemp.getRaca());
	}
}

1 Resposta

G

Dentro do do…while você esta usando nextLine(), este método não consome o caractere de quebra de linha (o ENTER) tente usar o método next() como no exemplo abaixo:

char sair = ‘n’;
List nomes = new ArrayList();

Scanner leia = new Scanner(System.in);
	do {
		
		System.out.println("Digite um nome: ");
		String nome = leia.next();
		nomes.add(nome);
		
		System.out.println("Deseja sair? [s/n]: ");
		sair = leia.next().charAt(0);
		
	}while(sair != 's');
	
	for(String n : nomes) {
		System.out.println("Nome: " + n);
	}
Criado 20 de maio de 2017
Ultima resposta 20 de mai. de 2017
Respostas 1
Participantes 2