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

Respostas sem o preenchimento do prompt

Boa noite.

Fiquei com uma dúvida no exercício 2, quando temos que definir se um número é negativo ou positivo. Ao inserir qualquer número a resposta aparece corretamente. Mas quando não coloco nenhum número e dou ok, aparece que "Este número é positivo"?

let chute = prompt ('Digite um número qualquer');
if (chute >=0) {
    alert ('Este número é POSITIVO');
} else {
    alert ('Este número é NEGATIVO');
}

O mesmo acontece no exercício 3, pois se eu não colocar nenhuma pontuação, a resposta é "Tente novamente para ganhar?

let pontuacao = prompt ('Qual é a sua pontuação?');
if (pontuacao >= 100) {
    alert('Parabéns, você venceu!');
} else {
    alert('Tente novamente para ganhar');
}

Poderiam me explicar o que acontece? Obrigado.

2 respostas
solução!

Olá Rogério, tudo bem?

Quando você usa o prompt para obter um valor do usuário e ele simplesmente clica em "OK" sem digitar nada, o valor retornado é uma string vazia (""). No JavaScript, uma string vazia é considerada igual a zero (0) quando comparada com números. Por isso, no seu código, a condição chute >= 0 é verdadeira, resultando na mensagem "Este número é POSITIVO".

Para resolver isso, você pode adicionar uma verificação para garantir que o usuário digitou um número válido. Veja como você pode ajustar seu código:

Para o exercício 2:

let chute = prompt('Digite um número qualquer');
if (chute === null || chute.trim() === '' || isNaN(chute)) {
    alert('Por favor, digite um número válido.');
} else {
    chute = Number(chute);
    if (chute >= 0) {
        alert('Este número é POSITIVO');
    } else {
        alert('Este número é NEGATIVO');
    }
}

Para o exercício 3:

let pontuacao = prompt('Qual é a sua pontuação?');
if (pontuacao === null || pontuacao.trim() === '' || isNaN(pontuacao)) {
    alert('Por favor, digite uma pontuação válida.');
} else {
    pontuacao = Number(pontuacao);
    if (pontuacao >= 100) {
        alert('Parabéns, você venceu!');
    } else {
        alert('Tente novamente para ganhar');
    }
}

Aqui está o que cada parte faz:

  • chute === null: Verifica se o usuário cancelou o prompt.
  • chute.trim() === '': Verifica se o usuário não digitou nada.
  • isNaN(chute): Verifica se o valor digitado não é um número.

Espero ter ajudado e bons estudos!

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

Muitíssimo obrigado pela explicação Armano. Valeu mesmo.