Jump to content
mundo

[Resolvido] Dúvida Método de classe

Recommended Posts

mundo

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

Share this post


Link to post
Share on other sites
AJBM

Boas!

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

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

Share this post


Link to post
Share on other sites
mundo

Esse meu metodo está correto tambem, o meu problema é a determina a facturaçao total da loja até ao momento, ou seja os € feitos ate ao momento com as vendas

Share this post


Link to post
Share on other sites
AJBM

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

Share this post


Link to post
Share on other sites
mundo

Vendo vários produtos, por exemplo 50 aguas 25 sumos etc, e tenho que fazer o total que já tenha vendido até ao momento

Share this post


Link to post
Share on other sites
AJBM

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;

Share this post


Link to post
Share on other sites
mundo

O que tenho ai no meu codigo se vires bem, e precisamente isso, uso o set para nao quebrar o principio do encapsulamento

Share this post


Link to post
Share on other sites
AJBM

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

Share this post


Link to post
Share on other sites
mundo

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;
   }

Share this post


Link to post
Share on other sites
AJBM

poe a variavel totalVend como uma variavel de instancia, por que sempre que vendes um produto pões a variável totalVend a 0,

Edited by AJBM

Share this post


Link to post
Share on other sites
mundo

Nao fica, porque o totalVend serve apenas para alterar o vendidos, que é o que uso depois no metodo da facturaçao

Share this post


Link to post
Share on other sites
AJBM

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,

Share this post


Link to post
Share on other sites
AJBM

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.