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
mundo

Já resolvi o problema, encontrava-se na minha classe de testes "estupidez minha"

Share this post


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.