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

Código dando erro

Olá, estou tendo um problema com um código. O enunciado me pede o seguinte: Ao clicar no botão soma, peça 2 números e exiba o resultado da soma em um alerta.

Eu criei uma função, declarei as variáveis e toda a questão do HTML foi verificada, tudo funcionando corretamente. Porém, ao executar, eu não obtenho a soma dos numeros, ao invés disso, ela apenas coloca os dois números ao lado do outro. Segue o código abaixo.

function botaoSoma() {
    let num1 = prompt("Insira um número para soma.")
    let num2 = prompt("Insira outro número para soma.")
    let soma = (num1 + num2)
    alert("O resultado da soma é " + soma)
}

Caso fique a dúvida, quando eu defino que num1 = 3 e num2 =3, ao invés de obter a soma (num1 + num2 = 3 + 3 = 6), o código só coloca os dois juntos, exibindo 33. Obrigado a quem puder me ajudar.

2 respostas
solução!

Olá, Luis! Tudo bem?

Não se preocupe, é um erro comum quando estamos aprendendo sobre programação. O problema está na forma como o JavaScript está interpretando a soma dos números.

Quando você usa a função prompt(), o JavaScript interpreta a entrada do usuário como uma string, não como um número. Portanto, quando você tenta somar num1 e num2, o JavaScript está, na verdade, concatenando as duas strings, ao invés de somá-las como números.

Para corrigir isso, você precisa converter as entradas do usuário para números antes de somá-las. Você pode fazer isso com a função parseInt(), que converte uma string em um número inteiro. Aqui está como você pode ajustar seu código:

function botaoSoma() {
    let num1 = parseInt(prompt("Insira um número para soma."))
    let num2 = parseInt(prompt("Insira outro número para soma."))
    let soma = num1 + num2
    alert("O resultado da soma é " + soma)
}

Agora, quando você inserir 3 para num1 e 3 para num2, o resultado da soma será 6, como esperado.

Espero ter ajudado e bons estudos!

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

Muito obrigado, não sabia desse detalhe!