2
respostas

Lógica de programação I - Javascript e HTML

Fala galera... Se alguém puder me ajudar aqui agradeço! no programa abaixo o resultado final quando coloco como SOMA ele não soma e sim, junta o NUMERO1 com o NUMERO2. Com -, * e / ele roda normal, mas na soma não. Alguém pode dizer o que tem que ser feito?


<meta charset="UTF-8">

<script>
    function pulaLinha() {

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }
    var nome = prompt("Qual seu nome?");
    var numero1 = prompt(nome + ", Digite o primeiro número");
    var numero2 = prompt(nome + ", Digite o segundo número");

    mostra(nome + ", o valor de " + numero1 + " + " + numero2 + " é: " + (numero1 + numero2));

</script>
2 respostas
<meta charset="UTF-8">

<script>
    function pulaLinha() {

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }
    var nome = prompt("Qual seu nome?");
    var numero1 = prompt(nome + ", Digite o primeiro número");
    var numero2 = prompt(nome + ", Digite o segundo número");

    mostra(nome + ", o valor de " + numero1 + " + " + numero2 + " é: " + (numero1 + numero2));

</script>

Olá! José, tudo bem ?

Desculpe a demora em te dar uma resposta.

Quando utilizamos o prompt para solicitar dados do usuário, ele vai nos retornar uma String, mesmo que a entrada sejam números, ele vai salvar na variável como String.

O Javascript de forma implícita faz a conversão de String para Número, quando fazemos operação de multiplicação, divisão e subtração utilizando Strings. Mas para a operação de soma, ele não faz essa conversão, pelo contrário, ele faz a concatenação das Strings. Isso quer dizer que ele vai pegar as duas Strings que estão sendo somadas e vai juntar elas por assim dizer.

Por exemplo:

var fraseUm= “Frase1”
var fraseDois=”Frase2”

mostra(fraseUm+FraseDois)

O que será mostrado na tela será “Frase1Frase2”.É exatamente isso que está acontecendo com seu código, os números estão sendo concatenados por estarem no formato de String. Para corrigir devemos apenas converter de String para Número e irá funcionar corretamente a soma.

Quando queremos fazer essa conversão, podemos utilizar a função Number, que vai converter o conteúdo passado como parâmetro para o tipo Numérico. Logo, podemos fazer isso logo na hora da leitura, da seguinte forma:

<script>
    function pulaLinha() {

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }
    var nome = prompt("Qual seu nome?");
    var numero1 = Number(prompt(nome + ", Digite o primeiro número"))
    var numero2 = Number(prompt(nome + ", Digite o segundo número"));

    console.log()

    mostra(nome + ", o valor de " + numero1 + " + " + numero2 + " é: " + (numero1 + numero2));

</script>

Qualquer dúvida fico à disposição.

Abraços e bons estudos.

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