mundo Posted March 21, 2013 at 10:24 PM Report #499933 Posted March 21, 2013 at 10:24 PM 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
AJBM Posted March 22, 2013 at 12:27 AM Report #499947 Posted March 22, 2013 at 12:27 AM Boas! produtos.setQuantidade(-numUnidades);-- ve se é isto, estas a colocar a quantidade a negativa, o que secalhar queres fazer é produtos.setQuantidade(produtos .getQuantidade()-numUnidades);
mundo Posted March 22, 2013 at 09:00 AM Author Report #499956 Posted March 22, 2013 at 09:00 AM 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
AJBM Posted March 22, 2013 at 10:54 AM Report #499968 Posted March 22, 2013 at 10:54 AM 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
mundo Posted March 22, 2013 at 11:10 AM Author Report #499969 Posted March 22, 2013 at 11:10 AM Vendo vários produtos, por exemplo 50 aguas 25 sumos etc, e tenho que fazer o total que já tenha vendido até ao momento
AJBM Posted March 22, 2013 at 11:56 AM Report #499975 Posted March 22, 2013 at 11:56 AM 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;
mundo Posted March 22, 2013 at 02:14 PM Author Report #499988 Posted March 22, 2013 at 02:14 PM O que tenho ai no meu codigo se vires bem, e precisamente isso, uso o set para nao quebrar o principio do encapsulamento
AJBM Posted March 23, 2013 at 11:24 AM Report #500126 Posted March 23, 2013 at 11:24 AM 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
mundo Posted March 23, 2013 at 12:00 PM Author Report #500130 Posted March 23, 2013 at 12:00 PM 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; }
AJBM Posted March 23, 2013 at 12:05 PM Report #500131 Posted March 23, 2013 at 12:05 PM (edited) 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 March 23, 2013 at 12:15 PM by AJBM
mundo Posted March 23, 2013 at 01:04 PM Author Report #500133 Posted March 23, 2013 at 01:04 PM Nao fica, porque o totalVend serve apenas para alterar o vendidos, que é o que uso depois no metodo da facturaçao
AJBM Posted March 23, 2013 at 01:12 PM Report #500134 Posted March 23, 2013 at 01:12 PM 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,
mundo Posted March 23, 2013 at 03:50 PM Author Report #500142 Posted March 23, 2013 at 03:50 PM Neste momento esta a dar me 56.36€, deveria dar 445.3€
AJBM Posted March 23, 2013 at 04:29 PM Report #500145 Posted March 23, 2013 at 04:29 PM (edited) 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 March 23, 2013 at 04:37 PM by AJBM
mundo Posted March 26, 2013 at 01:34 PM Author Report #500452 Posted March 26, 2013 at 01:34 PM Já resolvi o problema, encontrava-se na minha classe de testes "estupidez minha"
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now