arrayList

14 respostas
J

Galera, estou com um problema em inserir dados em uma ArrayList.
Já revisei o codigo varias vezes e não achei o erro.

Codigo da Classe Atendente:
package dados;

import java.util.GregorianCalendar;

import utilitarios.LtpUtil;

public class Atendente implements Comparable<Atendente>{
	
	private String nome;
	private String cpf;
	private String telefoneFixo;
	private String telefoneMovel;
	private String email;
	private GregorianCalendar dataAdmissao;
	
	public Atendente(String nome, String cpf, String telefoneFixo,
			String telefoneMovel, String email, GregorianCalendar dataAdmissao) {
		super();
		this.nome = nome;
		this.cpf = cpf;
		this.telefoneFixo = telefoneFixo;
		this.telefoneMovel = telefoneMovel;
		this.email = email;
		this.dataAdmissao = dataAdmissao;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public String getTelefoneFixo() {
		return telefoneFixo;
	}
	public void setTelefoneFixo(String telefoneFixo) {
		this.telefoneFixo = telefoneFixo;
	}
	public String getTelefoneMovel() {
		return telefoneMovel;
	}
	public void setTelefoneMovel(String telefoneMovel) {
		this.telefoneMovel = telefoneMovel;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public GregorianCalendar getDataAdmissao() {
		return dataAdmissao;
	}
	public void setDataAdmissao(GregorianCalendar dataAdmissao) {
		this.dataAdmissao = dataAdmissao;
	}
	public String toString(){
		return "Nome: " + nome + "\n"
				+ "CPF: " + cpf + "\n"
				+ "Telefone Fixo: " + telefoneFixo + "\n"
				+ "Telefone Movel: " + telefoneMovel + "\n"
				+ "E-mail: " + email + "\n"
				+ "Data de Admissão: " + LtpUtil.formatarData(dataAdmissao, "dd/MM/yyyy");
	}
	@Override
	public int compareTo(Atendente o) {
		return cpf.compareToIgnoreCase(o.getCpf());
	}
}
Codigo da inserção dos dados. (Obs: Pacotes LTPUTIL - Consolo São arquivos meus, já estão inseridos certinhos)
private static void cadAtendente() {
		String nome;
		String cpf;
		String telefoneFixo;
		String telefoneMovel;
		String email;
		String opcao;
		GregorianCalendar dataAdmissao = new GregorianCalendar();

		while (true) {
			nome = Console.readLine("Nome do Atendente: ").trim();
			if (nome.equals("") || LtpUtil.contarPalavras(nome) < 2) {
				System.out.println("Nome inválido.");
			} else
				break;
		}
		while (true) {
			cpf = Console.readLine("CPF do Atendente: ");
			if (cpf == "" || !LtpUtil.validarCPF(cpf)) {
				System.out.println("CPF Invalido");
			} else
				break;
		}
		while (true) {
			telefoneFixo = Console.readLine("Telefone Fixo: ");
			if (telefoneFixo.length() < 8) {
				System.out.println("Telefone inválido.");
			} else
				break;
		}
		while (true) {
			telefoneMovel = Console.readLine("Telefone Movel: ");
			if (telefoneMovel.length() < 8) {
				System.out.println("Telefone inválido.");
			} else
				break;
		}
		while (true) {
			email = Console.readLine("E-mail do cliente: ");
			if (email.equals("") || !LtpUtil.validarEmail(email)) {
				System.out.println("E-mail inválido.");
			} else
				break;
		}
		opcao = Console.readLine("Deseja cadastrar o Atendente acima?[S/N]\nOpção: ");
		if (opcao.equalsIgnoreCase("S")) {

			try {
				comercial.cadastrarAtendente(new Atendente(nome, cpf, telefoneFixo, telefoneMovel, email, dataAdmissao));
				System.out.println("Atendente Cadastrado com Sucesso.");
				pause();
			} catch (Exception e) {
				System.out.println(e.getMessage());
				pause();
			}
		} else if (opcao.equalsIgnoreCase("N")) {
			System.out.println("Cancelado o cadastro do Atendente.");
			pause();
		} else {
			System.out
					.println("Opção invalida, cancelado o cadastro do atendente.");
			pause();
		}

	}
Codigo da hora de adicionar o Atendente na ArrayList:
private ArrayList<Atendente> listaAtendente = new ArrayList<>();
	
	public void cadastrarAtendente(Atendente obj){
		listaAtendente.add(obj);
		
	}
}

Tenho um outro programa que fiz que está funcionando perfeitamente, não estou entendendo o erro desse.

Obrigado Pela ajuda,
Desde já
Jorge Back.

14 Respostas

rafaelviny

tenta assim

private ArrayList<Atendente> listaAtendente = new ArrayList<Atendente>();
J

[quote=rafaelviny]tenta assim

private ArrayList<Atendente> listaAtendente = new ArrayList<Atendente>();

Não deu, já havia testado.

rafaelviny

deu algum erro?

coloca um breakpoint no metodo cadastrarAtendente e verifica se esta sendo chamado mesmo

J

rafaelviny:
deu algum erro?

coloca um breakpoint no metodo cadastrarAtendente e verifica se esta sendo chamado mesmo

Não deu erro algum, ja coloquei, e sim a função e chamada executada e me retorna NULL.

Estou usando Eclipse, estou fazendo o codigo no NetBeans para ver se é algum bug do eclipse.

rafaelviny

sua função é void, ela nao retorna nada.

public void cadastrarAtendente(Atendente obj){
listaAtendente.add(obj);

}

qual o valor da listaAtendente depois de passar pelo metodo cadastrarAtendente ?

rafaelviny

tenta assim se quiser retornar alguma coisa

public  ArrayList cadastrarAtendente(Atendente obj){  
       return  listaAtendente.add(obj);  
          
    }
J

Ele está me retornando NULL

rafaelviny

metodos void não retornam valores

J

e pq uso o try-catch

try {  
                comercial.cadastrarAtendente(new Atendente(nome, cpf, telefoneFixo, telefoneMovel, email, dataAdmissao));  
                System.out.println("Atendente Cadastrado com Sucesso.");  
                pause();  
            } catch (Exception e) {  
                System.out.println(e.getMessage());  
                pause();  
            }

dai ele me retorna erro e na mensagem vem null.
Eu concordo que nao retorna nada, mas aparece um null pra mim aki!

J

será que e pq a classe so tem variavel do tipo String. dai a estrutura do ArrayList fica grande e nao consegue salvar?

Tem algo haver?

J

Coloquei o metodo como public static(cadastraAtendente) e funcionou.
Não sei pq disso, vc saberia pq?

E

Jorge Back:
será que e pq a classe so tem variavel do tipo String. dai a estrutura do ArrayList fica grande e nao consegue salvar?

Tem algo haver?

Nada a ver mesmo.

A variável “comercial” foi inicializada onde? Não vi nem sua declaração, nem sua inicializaçaõ. Ela é de que tipo?

J

no inicio da classe

public static Comercial comercial;
L

Como vc está chamando o método cadastrarAtendente?

Coloque o restante do código.

Criado 19 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 14
Participantes 4