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

RESPOSTA ESTRANHA APRESENTADA NO JAVA??

Bomdia, boa tarde, boa noite! Será que alguém podeira me ajudar? Eu desenvolvi um programa em java orientado a objetos que calcula um financiamento veicular imobiliário (um simulador de financiamento), quando digito os valores o programa em Java me apresenta dados estranhos! Alguém podeira me explicar o que poderia estar acontecendo? Não sei se é a versão do Java que é ruim e defasado ou não! Se alguém puder me mê uma dica! Obrigado!

--------------------SIMULADOR DE FINANCIAMENTOS--------------------

Digite o valor do bem móvel/imóvel:     2050,50

Digite o valor do pagamento de entrada:     1000

Digite o percentual da taxa de juros ao mês/ano:     1,9

Digite o período de pagamento meses/anos:     48
--------------------RESULTADO DO CÁLCULO--------------------
Capital a financiar:     1050,50
Percentual pago de entrada:     0,49 %
Taxa de Juros efetivo aplicado no financiamento:     1,91 %
Valor total a pagar do financiamento sem o IOF:     R$ 19186731753461896000000000,00
Valor da Parcela a pagar mensal/anual sem o IOF:     R$ 399723578197122840000000,00
Valor total a pagar do financiamento com o IOF:     R$ 19186731753461896000000000,00
Valor da Parcela a pagar mensal/anual com o IOF:     R$ 399723578197122840000000,00
Deseja retornar? [S]Sim [N]Não===>     N
3 respostas
solução!

Olá Wagner! Tudo bem?

Isso pode ocorrer por diversos motivos, como erros de lógica no código, problemas com o tipo de dados utilizado ou até mesmo erros na fórmula de cálculo dos juros.

Aqui estão algumas dicas que podem te ajudar a identificar e corrigir o problema:

  1. Verifique os Tipos de Dados: Certifique-se de que você está utilizando os tipos de dados corretos para valores monetários e cálculos de juros. Em Java, é comum usar double para valores com casas decimais, mas para cálculos financeiros, o tipo BigDecimal é mais apropriado devido à sua precisão.

    BigDecimal valorBem = new BigDecimal("2050.50");
    BigDecimal valorEntrada = new BigDecimal("1000");
    BigDecimal taxaJuros = new BigDecimal("1.9");
    int periodo = 48;
    
  2. Revisão das Fórmulas: Verifique se as fórmulas que você está utilizando para calcular os juros e o valor das parcelas estão corretas. A fórmula básica para calcular o valor futuro de um financiamento é:

    [ FV = PV \times (1 + r)^n ]

    Onde:

    • (FV) é o valor futuro.
    • (PV) é o valor presente (capital a financiar).
    • (r) é a taxa de juros por período.
    • (n) é o número de períodos.

    Aqui está um exemplo de como você pode implementar isso em Java usando BigDecimal:

    BigDecimal valorFinanciado = valorBem.subtract(valorEntrada);
    BigDecimal taxaMensal = taxaJuros.divide(new BigDecimal("100"));
    BigDecimal valorTotal = valorFinanciado.multiply(taxaMensal.add(BigDecimal.ONE).pow(periodo));
    
    System.out.println("Valor total a pagar: " + valorTotal);
    

Se mesmo assim você não consegui resolver o seu problema, peço que compartilhe todo o seu código para que eu realize testes. Envie via GitHub ou Drive do Google.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Obrigado pela dica! Mas a questão é de que estavam funcionando corretamente, mas de repente começou a dar esses problemas, principalmente quando tentei atualizar a máquina virtual java JDK!!

package calculocalculo;
import java.util.Scanner;
public class CalculoCalculo {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        String retornar;
        do {
            System.out.println("---TESTE DE CÁLCULO---");
            System.out.print("Digite o valor do capital:     ");
            double capital = teclado.nextDouble();
            System.out.print("Digite a taxa de juros ao mês/ano:     ");
            double taxaDeJuros = teclado.nextDouble();
            System.out.print("Digite o período de tempo:     ");
            int periodoDeTempo = teclado.nextInt();
            double montante = capital * Math.pow(1 + (taxaDeJuros / 100), periodoDeTempo);
            System.out.println(String.format("Valor total a pagar é de R$  %.2f", montante));
            System.out.print("Deseja retornar? S/N --->     ");
            retornar = teclado.next();
        } while (retornar.equals("S") || retornar.equals("s"));
    }
}

Este é o código fonte em Java como exemplo simplificado que fiz só para testar e deu no resultado que passei no início!!