Olá a todos(as).
Pessoal estou estudando um pouco de Java e me deparei com um problema em uma aplicação que estou tentando fazer.
Bom pra resumir eu tenho uma lista de vendas onde tenho os atributos (valorVenda, dataVenda e FormaPagamento), eu preciso filtrar todas as vendas do mês, por exemplo:
Pegar todas as vendas do mês “04/22” (mês/ano)
Somar o valor delas para ver quanto foi o total de vendas nesse mês.
Tenho um método para fazer esse filtro, mas não sei o porque ele não entra na minha condição IF/ELSE para filtrar o mês, ele simplesmente retorna o valor 0 que é nada mais que valor inicial da minha variável que irá receber a soma das vendas.
segue abaixo alguns trecho do código que acredito ajudar na compreensão do problema.
Adicionando valores na lista
vendas.add(new Venda(1,400.0,sdf.parse("11/04/2022"),Finalizadora.CartaoCredito));
vendas.add(new Venda(2,900.0,sdf.parse("11/04/2022"),Finalizadora.Dinheiro));
vendas.add(new Venda(3,1400.0,sdf.parse("21/04/2022"),Finalizadora.Pix));
vendas.add(new Venda(4,1200.0,sdf.parse("30/05/2022"),Finalizadora.CartaoCredito));
vendas.add(new Venda(5,9000.0,sdf.parse("20/05/2022"),Finalizadora.Dinheiro));
vendas.add(new Venda(6,3500.0,sdf.parse("01/05/2022"),Finalizadora.Dinheiro));
vendas.add(new Venda(7,1200.0,sdf.parse("30/05/2022"),Finalizadora.Pix));
vendas.add(new Venda(8,1346.0,sdf.parse("02/06/2022"),Finalizadora.CartaoCredito));
vendas.add(new Venda(9,1500.0,sdf.parse("29/06/2022"),Finalizadora.CartaoCredito));
vendas.add(new Venda(10,1200.0,sdf.parse("30/06/2022"),Finalizadora.CartoDebito));
vendas.add(new Venda(11,700.0,sdf.parse("30/06/2021"),Finalizadora.CartaoCredito));
vendas.add(new Venda(12,1000.0,sdf.parse("30/06/2021"),Finalizadora.CartaoCredito));
Método para filtra as venda do mês
private static float calculaValorVendasPorData(int mesEsc, int anoEsc){
float soma = (float) 0.0;
int mes, ano;
Calendar calendario = Calendar.getInstance();
mes = 1 + calendario.get(Calendar.MONTH);
ano = calendario.get(Calendar.YEAR);
for(Venda v : vendas) {
calendario.setTime(v.getDataCompra());
if(mes == mesEsc && ano == anoEsc){
soma += v.getValor();
}
}
return soma;
}
Lembrando que o mês e ano são escolhidos pelo usuário através da classe Scanner
mostrando o resultado:
System.out.println("Total de vendas para o período: " + calculaValorVendasPorData(mesEsc,anoEsc));
Resultado no console da IDE:
Escolha o mês (somente numeros):
04
Escolha o ano (somente numeros):
2022
400.0
900.0
1400.0
=============
Total de vendas para o período: 0.0
Desde já, agradeço a ajuda.