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

Escrevi um código durante o curso, porem o mesmo volta com um erro de "NaN" e não consigo resolver esse erro, será que alguém poderia me explicar o por que o código esta com esse erro e como resolver?

<meta charset="utf-8">

<script>

    function linha(){
        document.write ("<br>");
    }
    function texto(texto){
        document.write(texto);
    }
    function titulo(texto){
        document.write("<h1>" + texto + "</h1>");
        linha();
        linha();
    }
    function imc(X, Y){
        return X / (Y * Y);
    }

    var nome = prompt("Qual seu nome?");
    var pesoInf = prompt(nome + " Qual seu peso?");
    var alturaInf = prompt(nome + " Qual sua altura?");
    var imcCalculado = imc(pesoInf, alturaInf);

    titulo("Calculadora de IMC");
    texto(nome + " seu peso e de: " + pesoInf);
    linha();
    texto(nome + " sua altura e de: " + alturaInf);
    linha();
    texto(nome + " seu IMC e de: " + imcCalculado);

</script>
4 respostas

Oi, Bruno , tudo bem?

O probleminha está na parte da função imc, ela não está associando aos valores que foram passados pelo usuário através das variáveis alturaInf e pesoInf, ficando assim:

 function imc(pesoInf, alturaInf){
        return pesoInf / (alturaInf * alturaInf);
    }

Com essa função, você conseguirá passar os valores corretamente por parâmento (pesoInf, alturaInf) e calcular quando você chamou a variável imcCalculado Pegou a ideia? Se ficar alguma dúvida, pode falar :}

Olá Bruno, tudo bem? Repliquei o seu código aqui e não obtive nenhum problema, quais os parâmetros que estão sendo passados quando solicitados pelo prompt? O erro de NaN ocorre no momento em que a function imc não consegue realizar o cálculo dos 2 parâmetros.

solução!

Laís Cavalcanti e Erico Campos,

Boa tarde!

Muito obrigado pelas respostas, Lais segui sua dica e alterei o meu código, porem o problema persistia, apos muita frustração e xingar um pouco acabei percebendo que se tratava de um erro extremamente simples, era erro humano, erro do usuário quando inseria os dados (no caso o idiota era eu mesmo), o erro era que no momento de inserir a altura eu inseria a informação com virgula e não com ponto, fazendo com que o sistema não consegui se realizar os cálculos.

Ex: Eu inseria: Altura 1,75

O correto era: 1.75

Novamente muito obrigado pela disponibilidade!

Bruno, não existe erro idiota! Essa questão é como o JS trata os valores que você passa.

De uma forma bem básica, não vou me aprofundar em como funciona, o JS trata tudo com string, quando você digita os dados e ele tenta fazer o cálculo, ele tenta converter o que você digitou para número e dai fazer o que precisa ser feito, por estar digitando com "," ao invés de "." ele tentava fazer o calculo de um número com uma string e isso é inválido, por isso aparecia o NaN ou Nullo do JS