Ir para o conteúdo
mundo

[Resolvido] Dúvida Método de classe

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;
   }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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,

Editado por AJBM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por AJBM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.