Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Meu for não esta funcionando

Ola, boa tarde!!! Estou precisando de ajuda, não tenho muita experiencia ainda em java. Estou tentando fazer que meu for ele crie um numero de instancias de uma determinada classe e adicione em uma lista criada para esse instancia. Pois bem o código roda mais meu for não chega a funcionar, podem me ajudar?

    if(movimentacao.isParcela() == true) {
            List<Movimentacao> movimentacoes = new ArrayList<>();
            movimentacoes = parcelaMovimentacao(movimentacao);
            movimentacaoRepository.saveAll(movimentacoes);

            return true;
        }
    List<Movimentacao> movimentacoes = new ArrayList<>();

        Movimentacao novaMovimentacao = new Movimentacao();

        for(int i = 0; i <= movimentacao.getNumeroParcela(); i ++) {

            novaMovimentacao.setId(null);
            novaMovimentacao.setDataVencimento(mes.calculaMes(movimentacao.getDataVencimento(), i));
            novaMovimentacao.setDataPagamento( null);
            novaMovimentacao.setValorApagar(movimentacao.getValorApagar());
            novaMovimentacao.setValorApagar(new BigDecimal(0.0));
            novaMovimentacao.setDocumento(movimentacao.getDocumento());
            novaMovimentacao.setObservacao("Parcela :"+ i + " /" + movimentacao.getNumeroParcela());
            novaMovimentacao.setConta(movimentacao.getConta());
            novaMovimentacao.setCategoria(movimentacao.getCategoria());
            novaMovimentacao.setPlano(movimentacao.getPlano());
            movimentacoes.add(novaMovimentacao);
        }

        return movimentacoes;

    }
3 respostas

Provavelmente seu for não está sendo executado por 2 motivos possíveis: está entrando no if

if(movimentacao.isParcela() == true) {
         //...
    return true;
}

ou a condição do for nunca é verdade:

i <= movimentacao.getNumeroParcela()

coloque um sysout antes de entrar no for printando o movimentacao.getNumeroParcela() para ver qual o valor está sendo retornado pelo metodo get.

solução!
public boolean adiciona(Movimentacao movimentacao) {
        movimentacao.setId(null);

        if(movimentacao.isParcela() == true) {
            List<Movimentacao> movimentacoes = new ArrayList<>();
            movimentacoes = parcelaMovimentacao(movimentacao);
            movimentacaoRepository.saveAll(movimentacoes);

            return true;
        }

        boolean resultadoSaque = contaService.saque(movimentacao);
        boolean resultado = movimentacao.comparacaoValorMovimentacao(movimentacao.getValorApagar(), movimentacao.getValorPago());
        if (resultadoSaque == true && resultado == true) {
            movimentacao.setPago(true);
            movimentacaoRepository.save(movimentacao);
            return true;
        }

        movimentacaoRepository.save(movimentacao);
        return false;
    }
private List<Movimentacao> parcelaMovimentacao(Movimentacao movimentacao){
        List<Movimentacao> movimentacoes = new ArrayList<>();

        Movimentacao novaMovimentacao = new Movimentacao();

        for(int i = 0; i < movimentacao.getNumeroParcela(); i ++) {

            novaMovimentacao.setId(null);
            novaMovimentacao.setDataVencimento(mes.calculaMes(movimentacao.getDataVencimento(), i));
            novaMovimentacao.setDataPagamento( null);
            novaMovimentacao.setValorApagar(movimentacao.getValorApagar());
            novaMovimentacao.setValorApagar(new BigDecimal(0.0));
            novaMovimentacao.setDocumento(movimentacao.getDocumento());
            novaMovimentacao.setObservacao("Parcela :"+ i + " /" + movimentacao.getNumeroParcela());
            novaMovimentacao.setConta(movimentacao.getConta());
            novaMovimentacao.setCategoria(movimentacao.getCategoria());
            novaMovimentacao.setPlano(movimentacao.getPlano());
            movimentacoes.add(novaMovimentacao);
        }

        return movimentacoes;

    }