Problems instantiating object in vector by Return of a method - JAVA

Asked

Viewed 51 times

0

I have the following method of the Shop class that has the function of filling the variables of an object of type Sale (besides modifying a product according to the quantity of products sold passed in the parameter).

public Venda realizarVenda(int codigoCliente, int codigoProduto, int quantidade){

       Venda v = new Venda();
       for(int i = 0 ; this.clientes[i].getCodigo() != 0 ; i++){
           if(this.clientes[i].getCodigo() == codigoCliente){
               v.setCliente(this.clientes[i].getNome());
               v.setCodigoVenda(codigoCliente+codigoProduto);
               v.setProduto(this.produtos[codigoProduto-1].getNome());
               v.setQuantidade(quantidade);
               this.produtos[codigoProduto-1].setQuantidade
               (this.produtos[codigoProduto-1].getQuantidade()- quantidade);
           }
       }
       return v;
   }

Turns out, when trying to call the function with the line:

loja.getVendas()[0].setVendas(loja.realizarVenda(1112, 7, 8));

Makes the mistake:

cannot find symbol
symbol:method setVendas(Venda)
location: class Venda

Store class variables and constructor:

public class Loja {
    private Produto[] produtos;
    private Cliente[] clientes;
    private Venda[] vendas;

    public Loja (int quantidadeProdutos, int quantidadeClientes, int quantidadeVendas) {
    this.produtos = new Produto[quantidadeProdutos];
        for (int i = 0; i < quantidadeProdutos; i++) {
        this.produtos[i] = new Produto(); 
        }
    this.clientes = new Cliente[quantidadeClientes];
        for (int j = 0; j < quantidadeClientes; j++) {
        this.clientes[j] = new Cliente(); 
        }
    this.vendas = new Venda[quantidadeVendas];
        for (int k = 0; k < quantidadeVendas; k++) {
        this.vendas[k] = new Venda(); 
        }
    }

How to correctly instantiate the object being passed as a parameter in the method in an object vector? The getters and setters of an object vector must be configured differently from the standard form?

example of how are the getters and setters:

public Venda[] getVendas() {
    return vendas;
}

public void setVendas(Venda[] vendas) {
    this.vendas = vendas;
}

1 answer

1


On the line loja.getVendas()[0].setVendas(loja.realizarVenda(1112, 7, 8)); you’re trying to do the setVendas(...) of a variable of the type Venda and not the array vendas class Loja of your code.

The error happens because the class Venda does not have the method setVendas, who owns I believe is the class Loja.

Note that your method setVendas(Venda[] vendas) expects a sales array and not an object of the type Venda which is what you’re passing on to it as function return public Venda realizarVenda(..)

If I understand correctly what you want, you just have to do:

loja.getVendas()[0] = loja.realizarVenda(1112, 7, 8);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.