Comparison between objects via loop, If and else?

1

I'm a beginner in java and I'm having trouble comparing objects through a loop. I'm developing software for an MVC (Model-view-controller) design video store and want to know how the person object compares through its code with zero. When I make this loop, it displays the following message: Bad operand types for binary operator '>' .

 private boolean salvarPessoa(){
            OPDatas bl = new OPDatas();

            pessoa.setNome(this.txtNome.getText());
            pessoa.setBairro(this.txtBairro.getText());
            pessoa.setEndereco(this.txtEndereco.getText());
            pessoa.setCidade(this.txtCidade.getText());
            pessoa.setUf(this.txtUF.getText());
            pessoa.setCPF(this.txtCPF.getText());
            pessoa.setTelefone(this.txtTelefone.getText());
            pessoa.setdNascimento(bl.converterDataStringParaDate(this.txtdNascimento.getText()));// 



         // Esse é o loop e o objeto pessoa!
            if (pessoaController.salvar(pessoa> 0) {
                JOptionPane.showMessageDialog(this, "Registro gravado com sucesso!");
                this.desabilitarCampos();
                this.carregarClientes();
                return true;
            } else {
                JOptionPane.showMessageDialog(this, "Erro ao gravar os dados!", "ERRO", JOptionPane.ERROR_MESSAGE);
                return false;
            }

         }

PersonController:

public boolean salvar( String nome, String endereco, String bairro, String sexo, String telefone, String celular, String CPF, Date dNascimento, String cidade, String uf ) {

        boolean retorno;

        Pessoa pessoa = new Pessoa();
        pessoa.setNome(nome);
        pessoa.setEndereco(endereco);
        pessoa.setBairro(bairro);
        pessoa.setSexo(sexo);
        pessoa.setTelefone(telefone);
        pessoa.setCelular(celular);
        pessoa.setCPF(CPF);
        pessoa.setdNascimento(dNascimento);
        pessoa.setCidade(cidade);
        pessoa.setUf(uf);


        retorno = pessoaDAO.salvar(pessoa);

        return retorno;
    }
    
asked by anonymous 20.10.2015 / 21:09

3 answers

3

First, if and else are not loops . They are conditional operators.

for and while make loops , that is, they repeat a same statement times until a certain condition is met. Other than if that makes a statement if condition is met.

Now, let's get down to business. You said in the comments

  

To save my person and if the person object code is greater than zero it saves!

To verify that the code is greater than zero and then save, you should do

if (pessoa.getId() > 0) { //verifica se o ID é maior que zero
    if(pessoaController.salvar(pessoa)){ //instrução de salvar
        JOptionPane.showMessageDialog(this, "Registro gravado com sucesso!");
    }else{
        // Mensagem de erro
    }
}

Here we come to another problem of your code, the method salvar() in PessoaController . In the code of the question the method is asking for a lot of parameters, in this case, all attributes of the object Pessoa .

public boolean salvar( String nome, String endereco, String bairro, String sexo, String telefone, String celular, String CPF, Date dNascimento, String cidade, String uf )

However, you are calling the salvar() method, passing as a parameter a Pessoa and not passing all the parameters that the method asks for. This will generate another error .

The solution is to change the signature of your salvar() method to request as a parameter a Pessoa . This way, you can populate the attributes of the object and then pass it integer to the PessoaController save.

public boolean salvar(Pessoa pessoa) { ... }

In this way, you can use the method call as you are currently using

pessoaController.savar(pessoa);
    
20.10.2015 / 21:22
2

This error occurs because of this snippet of your code:

if (pessoaController.salvar(pessoa> 0)

Because you are trying to check if an object is larger than a number.

Since you already have the Populated Person object it is unnecessary for you to pass all the attributes in the parameters of the salvar method, you can pass the object itself that already has all the attributes.

In PersonController:

public boolean salvar(Pessoa pessoa) {
  boolean retorno;
  if(pessoa != null)
    retorno = pessoaDAO.salvar(pessoa);

  return retorno;
}

In your salvarPessoa method you should remove this comparison from pessoa > 0 and pass your person object as a method parameter. As noted by @jbueno in case you need to check if there is an ID in the person object and then perform the INSERT simply add an if:

if (pessoa.getId() > 0 && pessoaController.salvar(pessoa)) {
 // restante do seu código
}

If you have Id greater than zero and the return method is true, it saved your object. Recalling that a & only executes the second case the first one is answered.

    
20.10.2015 / 21:14
1

You can not compare if a person is greater than zero, because he is a person-like object,

What you can do is check the return of your save method if it is true

// Esse é o loop e o objeto pessoa!
        if (pessoaController.salvar(pessoa)) {
            JOptionPane.showMessageDialog(this, "Registro gravado com sucesso!");
            this.desabilitarCampos();
            this.carregarClientes();
            return true;
        } else {
            JOptionPane.showMessageDialog(this, "Erro ao gravar os dados!", "ERRO", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    
20.10.2015 / 21:13