Dificuldade com lógica de um método

4 respostas
P

Ola pessoal,
Estou com uma dificuldade com a logica do meu metodo, este era para validar o Ano do concurso criado, ou seja, n poderia ter 2 concursos com o msm ano!
Alguem me ajuda Por Favor!

Grato.

O metodo:

public boolean verificaAno(ArrayList<ConcursoDeQuadrilhas> listaConcursos,int ano)	{
		for (Iterator<ConcursoDeQuadrilhas> it = listaConcursos.iterator(); it.hasNext() ;) {
			ConcursoDeQuadrilhas c = it.next();
                if (c.getAno() == ano ){
                	return false;
                }
		}
		return true;
	}

Esse é o botão q cria o Concurso!

class ButtonA implements ActionListener	{
		public void actionPerformed(ActionEvent event)	{
			ano = Integer.parseInt(criar.getText());
			cq.setAno(ano);

			if (c.verificaAno(tc.concursos, ano))	{
				tc.novoConcurso(cq);
				listaConc.box.addItem(ano);
			
				criaQuad.go();
			}
			else	{
				JOptionPane.showMessageDialog(null,"Atenção! Já existe um concurso nesse ano!");
			}
		}
	}

[size=18]O problema é que qnd cria os concursos pela interface, no segundo sempre dá a mensagem como se já existe um concurso com aquele ano, sendo que não existe pq tentei criar com anos diferentes[/size]
Ajudem aew!!!

4 Respostas

P

POR FAVOR ALGUEM ME AJUDE!!!

fmachado.dev

Bom dia!

Cara eu não vi nenhum erro na lógica, você já tentou fazer um debug? ver as iterações que ele faz, verifique se você está colocando o valor correto na variável ano, o erro pode estar antes disso.

Posta o código onde você atribui o ano e etc

Abraços

henriqueluz

Algumas considerações e dicas iniciais.
Quando for definir os tipos dos seus atributos sempre prefira utilizar as classes Wrappers(Integer, Long, Double, etc.) ao invés dos tipos primitivos(int, long, double).
É realmente bem melhor manipular objetos do que tipos primitivos.

Quanto ao seu método eu dei uma olhada aqui e fiz deste jeito e funcionou:
public static Boolean verificaAno(List<ConcursoDeQuadrilhas> listaQuadrilhas, Integer ano){
		for (ConcursoDeQuadrilhas quadrilha : listaQuadrilhas) {
			if(quadrilha.getAno().equals(ano)){
				return Boolean.FALSE;
			}
		}
		return Boolean.TRUE;
	}
E no main eu fiz alguns testes e funcionou direitinho:
ConcursoDeQuadrilhas q1 = new ConcursoDeQuadrilhas();
		q1.setAno(2010);

		ConcursoDeQuadrilhas q2 = new ConcursoDeQuadrilhas();
		q2.setAno(2011);
		
		ConcursoDeQuadrilhasq3 = new ConcursoDeQuadrilhas();
		q3.setAno(2008);
		
		
		List<ConcursoDeQuadrilhas> quadrilhas = new ArrayList<ConcursoDeQuadrilhas>();
		quadrilhas.add(q1);
		quadrilhas.add(q2);
		quadrilhas.add(q3);

		
		System.out.println(verificaAno(quadrilhas, 2009));
		System.out.println(verificaAno(quadrilhas, 2010));

Abraços,

isaiaspf

Poo_ufs,

Quase certeza que o problema está no listener do ButtonA. Posta todo código que fica mais fácil pra identificar o problema.

Criado 3 de agosto de 2011
Ultima resposta 4 de ago. de 2011
Respostas 4
Participantes 4