Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O meu código concatenou onde eu não queria.

<meta charset=UTF-8>

<script> 

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


    var nome =  prompt("digite o nome do seu time: ");
    var peso = parseInt(prompt("digite o número de vitorias: "));
    var altura = parseInt(prompt("digite o número de empates: "));



    mostra( nome + " tem o total de: "+(peso * 3) + altura);

    pulaLinha();



</script>

Quando eu abro no navegador o aparece o número 301 que seria uma concatenação, o que não seria a resposta que eu quero, porém quando eu adaptei o código para:

<meta charset=UTF-8>

<script> 

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


    var nome =  prompt("digite o nome do seu time: ");
    var peso = parseInt(prompt("digite o número de vitorias: "));
    var altura = parseInt(prompt("digite o número de empates: "));


    mostra(nome + " tem o total de: ");
    mostra( (peso * 3) + altura);

    pulaLinha();



</script>

Eu obtive o resultado que queria, mas eu não sei o que eu fiz de errado na primeira tentativa.

Obs: No código está peso e altura pois eu o adaptei da vez que eu estava calculando o IMC.

1 resposta
solução!

Oi Joaquim, tudo bem?

No seu primeiro arquivo, você tem uma string que quer concatenar com os números:

 mostra( nome + " tem o total de: "+(peso * 3) + altura);

Isso significa que o JS vai tentar concatenar todas as variáveis com a string. Lembrando que o ( ) possui maior precedência no código, então peso * 3 será executado de maneira correta, supondo que o peso seja 50, temos um resultado de 150.

Imaginando que a variável nome seja Joaquim, temos por enquanto: Joaquim tem o total de: 150 + altura. Mas como tudo isso é uma string, ele vai adicionar a variável altura junto com o 150 em forma de concatenação, pois você não usou parênteses para fazer a soma dos valores de fato!

O correto seria:

 mostra( nome + " tem o total de: "+((peso * 3) + altura));

Assim, ele vai calcular primeiro as contas com números, para depois concatenar com a string!

Espero que tenha ajudado, bons estudos!