Jump to content

[Resolvido] Dúvida Método de classe


mundo

Recommended Posts

Bom noite, estou com uma duvida que e calcular a faturaçao de uma Loja, para isso tenho os seguintes metodos, no entanto nao estou a obter o resultado correto, se podessem ajudar agradecer, postarei apenas o que acho essencial:


// Variaveis de instância
   private String nomeLoja;
   private Produto[] produtos;
   private int nprodutos; //Número de produtos na Loja

   private int prodVend; //Número de produtos vendidos

   // Capacidade da Loja (em numero de produtos)
   private int capacidade; 

   // Capacidade inicial de produtos na loja
   public static final int capacidade_inicial = 1; 



/**
    * Método que vende X unidades do produto com nome
    * pelo utilizador, caso o numUnidade seja superior a
    * quantidade em Stock não é possivel vender o produto
    */
   public void venderProduto(String nomeProduto, int numUnidades){

       for(int i = 0; i < this.nprodutos; i++){
           if((produtos[i].getNome() == nomeProduto) && 
           (produtos[i].getQtStock()-numUnidades>= 0)){

               produtos[i].setQuantidade(-numUnidades);
               setVendidos(numUnidades);
           }
       }

   }


/**
    * Método que determina o valor total das vendas
    * feitas até ao momento
    */
   public double facturacaoLoja(){
       double totalVendas = 0.0;

       for(int i = 0; i < this.nprodutos; i++){
           totalVendas += prodVend*produtos[i].getPrecoVenda();
       }
       return totalVendas;
   }

Nao podemos usar Colections para isto ainda.

Cumprimentos e obrigado desde ja

Link to post
Share on other sites

Boas!

produtos.setQuantidade(-numUnidades);-- ve se é isto, estas a colocar a quantidade a negativa, o que secalhar queres fazer é

produtos.setQuantidade(produtos.getQuantidade()-numUnidades);

Link to post
Share on other sites

Na tua loja só vendes um produto, é que pelo que percebi estas a multiplicar sempre o mesmo numero de produtos pelo preço, ou seja, vendeste 3 aguas 2 sumos, prodVend=5 5*agua 5*sumos

Link to post
Share on other sites

Como estas a fazer não sei se vais la.

Podes é sempre que venderes um produto, adicionas o valor desse produto a uma variável, no teu primeiro método venderProdutos, valorTotal=valorTotal+produtos.getPrecoVenda()*quantidade;

Link to post
Share on other sites

Eu não sei o que faz o teu setVendidos, mas deve aumentar o numero dos produtos vendidos certo?

Mas por exemplo vendes 30 aguas o preço delas é 0.50 vendes 10 sumos preço 1.00, a variável prodVend=40, mas os preços são diferentes, e as quantidades também, logo para saberes o total de vendas terias de fazer 30*0.5+10*1 certo?

Pelo que eu percebi tu estas a fazer 40(todos produtos vendidos)*agua e depois vezes os sumos,totalVendas += prodVend*produtos[i].getPrecoVenda();.

por isso é que eu faria isto, sempre que vendes o produto actualizavas o valor total, valorTotal=valorTotal+produtos.getPrecoVenda()(agua ou sumos)*quantidade(agua ou sumos), depois para saberes o total de vendas fazias um método que retorna-se o valor total

Link to post
Share on other sites

Neste momento tenho assim mas no entanto nao faz o pretendido ainda:

Metodos pertencentes a classe Loja


/**
    * Método que vende X unidades do produto com nome
    * pelo utilizador, caso o numUnidade seja superior a
    * quantidade em Stock não é possivel vender o produto
    */
   public void venderProduto(String nomeProduto, int numUnidades){
       double totalVend = 0.0;

       for(int i = 0; i < this.nprodutos; i++){
           if((produtos[i].getNome() == nomeProduto) && 
           (produtos[i].getQtStock()-numUnidades>= 0)){

               produtos[i].setQuantidade(-numUnidades);
               totalVend += numUnidades*produtos[i].getPrecoVenda();
               produtos[i].setVendidos(totalVend);
           }
       }

   }


/**
    * Método que determina o valor total das vendas
    * feitas até ao momento
    */
   public double facturacaoLoja(){
       double totalVendas = 0.0;

       for(int i = 0; i < this.nprodutos; i++){
           totalVendas += produtos[i].getVendidos();
       }
       return totalVendas;
   }

Classe Produto onde tenho o setVendidos é assim


/**
    * Modifica o numero de produtos vendidos
    */

   public void setVendidos(double numUnidade){
       this.prodVend += numUnidade;
   }
Link to post
Share on other sites

tens razão não tinha reparado.

Penso que o problema seja tu estas a percorrer todos os produtos da loja mesmo aqueles que não foram vendidos, se os produtos que não forem vendidos tiverem o valor de 0 não há problema, mas se não tiver o java da um valor ao aleatório, podes colocar o output que te da,

Link to post
Share on other sites

Verifica se o valor da variável totalVend no primeiro método esta correcto?, coloca na comparação do nome produtos.getNome().trim().equals(nomeProduto.trim()), e verifica se o nome dos produtos esta correcto.

Coloca a aqui classe produto

Edited by AJBM
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.