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

Quando o Usuário escreve a altura utilizando vírgula, o resultado do IMC dá "NaN", mas ao escrever com o ponto, funciona perfeitamente!

<meta charset = "UTF-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function calculaImc(altura, peso) {
        return peso / (altura * altura);

    }
    var nome = prompt("Olá, como você se chama?");
    var alturaInformada = prompt(nome + ", qual é sua altura?");
    var pesoInformado = prompt(nome + ", qual é o seu peso?");

    var imc = calculaImc(alturaInformada, pesoInformado);
    mostra(nome + ", o seu IMC é de : " +  imc);

</script>

Quando o Usuário escreve a altura utilizando vírgula, o resultado do imc dá "NaN", mas ao escrever com o ponto, funciona perfeitamente! Existe algum meio de solucionar isso? Foi gerado por alguma parte do código que escrevi errado?

2 respostas
solução!

Olá Diego, tudo bem com você?

Respondendo a primeira:

Foi gerado por alguma parte do código que escrevi errado?

Na verdade não, seu código está certinho, isso acontece porque o javascript não consegue fazer contas utilizando a virgula, então o resultado é "NaN" que significa "Not a Number"

Existe algum meio de solucionar isso?

Ao longo dos cursos será ensinado maneira de "formatar" a resposta do usuário, para que seja possível evitar erros desse tipo, mas no primeiro momento esse resultado é normal :)

Irei te mostrar uma solução para resolver esse problema, mas não fique assustado se não compreender, nas próximas aulas você irá aprender grande parte desses conceitos :)

var nome = prompt("Olá, como você se chama?");
    var alturaInformada = prompt(nome + ", qual é sua altura?");
    if(alturaInformada.includes(',')){
        alturaInformada = alturaInformada.replace(',', '.');
    }
    var pesoInformado = prompt(nome + ", qual é o seu peso?");
    if(pesoInformado.includes(',')){
        pesoInformado = pesoInformado.replace(',', '.');
    }

Vou separar o código novo em 2 partes, a primeira: if(alturaInformada.includes(',')){

Poderiamos traduzir isso como: "Se alturaInformada contém virgula" e embaixo eu tenho um bloco que diz o que é para fazer, no caso:

alturaInformada = alturaInformada.replace(',', '.');

Lendo esse trecho ficaria " Troque a virgula por ponto e coloque na variável alturaInformada"

Fazendo um resumo: Para corrigir esse problema estou verificando se o usuário digitou o número com virgula, caso seja verdadeiro eu troco a virgula por ponto para que o javascript faça a conta normalmente.

Caso ele tenha digitado com ponto o programa executa normalmente sem precisar fazer nenhuma mudança :)

Compreendeu? Qualquer coisa estou a disposição!

Abraços e Bons Estudos!

Compreendi perfeitamente! Muito obrigado!