Adicionar item no ArrayList

4 respostas
H

Estou fazendo uma aplicação web usando NetBeans IDE e JSF.
É um leilão on line.
Eu crio um leilão e tento adicioná-lo no arrayList, todavia não está adicionando. Abaixo segue o código. O que estou fazendo de errado?

[b]private ArrayList arrayLeilao = new ArrayList ();

public void criaLeilao(Produto prod){
    if(verificaLeilao(prod) == false){
        double precoIn = prod.getPreco();
        Leilao leilao = new Leilao(prod, precoIn, null);
        arrayLeilao.add(leilao);
    }
}
// retorn falso se ainda não existe leilão para determinado produto
public boolean verificaLeilao(Produto prod){
    if(arrayLeilao.isEmpty()){
        return false;
    }
    else{
        for(int cont = 0; cont < arrayLeilao.size(); cont++){
            if(arrayLeilao.get(cont).getProduto().equals(prod)){
                return true;
            }
        }
        return false;
    }
}[/b]

4 Respostas

R

por favor. use as tags [ code] quando posta código… não a tag [b]

agora vamos la… quando você faz isso

if(verificaLeilao(prod) == false){

você chama um método que retorna um boolean…

mas do jeito que está seu if, ele está estranho

se ele tem que retornar true faça assim

if(verificaLeilao(prod)){

senão, se tem que retornar false pra entrar no if deixe como está, ou faça assim:

if(!verificaLeilao(prod)){
H

ok, fiz a alteração, mas continua sem adicionar o leilao no array.

Fiz a depuração, ele entra no if(!verificaLeilao(prod)), altera o valor do double precoIn, cria o leilao, mas não adiciona no array. Abaixo do código.

private ArrayList <Leilao> arrayLeilao = new ArrayList <Leilao>();

    public void criaLeilao(Produto prod){
        if(!verificaLeilao(prod)){
            double precoIn = prod.getPreco();
            Leilao leilao = new Leilao(prod, precoIn, null);
            arrayLeilao.add(leilao);
        }
    }
    // retorn falso se ainda não existe leilão para determinado produto
    public boolean verificaLeilao(Produto prod){
        if(arrayLeilao.isEmpty()){
            return false;
        }
        else{
            for(int cont = 0; cont < arrayLeilao.size(); cont++){
                if(arrayLeilao.get(cont).getProduto().equals(prod)){
                    return true;
                }
            }
            return false;
        }
    }
R

ta… 2 coisas:

1 - ele precisa retornar false mesmo? é pra entrar no if somente se a lista estiver vazia? só vai existir no máximo um dado na lista?
2 - poste o main que está utilizando esses métodos, pra gente tentar entender melhor o que está havendo.

H

Seguinte Digao, o método criaLeilao é executado. Dentro do criaLeilao chama o verificaLeilao, que retorna true se já existe um leilão para determinado produto e false se ainda não existe leilão. Se não existir leilão, ele cria um novo leilao para o produto, portanto, deve entrar no if realmente se retornar false do verificaLeilao.

É uma aplicação Web, usando Java Server Faces, portanto não tem main, os métodos são chamados através do xhtml.

Com a depuração, já vi que o leilão é criado, todavia a linha

arrayLeilao.add(leilao);

não está adicionando o leilao no array. E realmente não vejo o porquê.

Criado 27 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 4
Participantes 2