5
respostas

[Dúvida] Resultado Está dando Número Errado

Meu código não está obedecendo a operação matemática das variável pontos

Se você entra com 3 vitórias e um empate, em vez de ele mostrar 10 pontos ele mostra 91, não sei por que.

5 respostas

Oi, Thiago

Mostre seu código Insira aqui a descrição dessa imagem para ajudar na acessibilidade

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
        document.write("<br>");
}

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
}

var vitorias = prompt("Entre com o número de vitórias");

var empates = prompt("Entre com o número de empates");

var pontos = (vitorias * 3) + empates;

mostra("os pontos do seu time é " + pontos);

if(pontos > 28) {

    mostra("Seu time está melhor do que no ano passado.");

}

if(pontos < 28) {

    mostra("Seu time está pior do que no ano passado.");
}

if(pontos == 28) {

    mostra("Seu time está igual igual ao ano passado.");

}

mostra("FIM")
</script>

Oi, Thiago

Em JavaScript, o sinal de adição "+" também é usado para concatenar (juntar) strings (texto).

Então:

// como o JS entende
let vitorias = "3"; // texto
let empate = "1"; // texto

let pontosVitoria = vitorias * 3; 
// devido a multiplicação o JS tenta converter para número. 
// pontosVitoria = "3" * 3 = 9 

let pontos = pontosVitoria + empate;  // devido o empate ser um texto, o "+" é usado para juntar número com texto
// pontos = 9 + "1" = "91"

A solução é converte "empate" para número

// usando "parseInt()" para converter texto(string) para número(int)
const vitorias = prompt("Entre com o número de vitórias");  // retorna texto

const empates = prompt("Entre com o número de empates"); // retorna texto

let pontos = (vitorias * 3) + parseInt(empates); // retorna um número

Nota: Prefira usar "let" e/ou "const" no lugar do "var". Entenda a diferença entre var, let e const no JavaScript

  Caso este post tenha lhe ajudado, marque-o como solução . Bons Estudos!  🤓

Tenta acrescentar essa variáveis!

var valorDoImpate = 1;
var ValorDaVitoria = 3;

var vitorias = prompt("Entre com o número de vitórias");

var empates = prompt("Entre com o número de empates");

var pontosVitoria = (vitorias * ValorDaVitoria);
var pontosImpate = (empates * valorDoImpate);
var pontos = (pontosVitoria + pontosImpate);

mostra("os pontos do seu time é " + pontos);

Ao invés de colocar so prompt na variável de vitórias e de derrotas, troque por parseInt(prompt(" "), então ficaria:

var vitorias = parseInt(prompt("Entre com o número de vitórias"));

var empates = parseInt(prompt("Entre com o número de empates"));

O parse Int serve pra converter texto em número

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software