Fala, galera!
Espero que estejam tento um ótimo dia.
Sobre o exercício:
Verifique se um número digitado pelo usuário é positivo ou negativo. Mostre um alerta informando.
Segue minha primeira forma de resolução:
//Verifique se um número digitado pelo usuário é positivo ou negativo. Mostre um alerta informando.
alert('Teste de verificação de números positivos e negativos.');
let numeroUsuario = prompt('Digite um número: ');
console.log('Número digitado: ', numeroUsuario);
//Verifica se o campo está vazio.
if (numeroUsuario == '') {
console.log('O campo está vazio.');
alert('O campo está vazio. Atualize a página e tente novamente.');
} else {
//Números positivos.
if (numeroUsuario > 0) {
console.log('O número ', numeroUsuario, ' é maior do que 0.');
alert('O número ' + numeroUsuario + ' é positivo.');
//Números negativos.
} else if (numeroUsuario < 0) {
console.log('O número ', numeroUsuario, ' é menor do que 0.');
alert('O número ' + numeroUsuario + ' é negativo.');
//Verificando o número neutro.
} else if (numeroUsuario == 0) {
console.log('O número ', numeroUsuario, ' é neutro.');
alert('O número ' + numeroUsuario + ' é considerado neutro.');
//Caso não se aplique a nenhuma das outras condições impostas, o código entende que não se trata mais de um número.
} else {
console.log('O valor (', numeroUsuario, ') não é um número.');
alert('O valor digitado não corresponde a um número. Atualize a página e tente novamente.');
}
}
Busco atender ao que foi proposto no exercício com algumas validações extras.
Primeiro verifico se o campo do usuário (prompt) não foi enviado sem preenchimento. Caso retorne false, ele para o else em que abro outras estruturas condicionais para verificar se o número é positivo, negativo ou neutro.
Por fim, não atendendo nenhuma das condições, novamente ele informa ao usuário que algo está errado, que provavelmente o valor digitado não é um número (podendo ser um texto, caractere especial e etc.).
Logo após, revisei o código e percebi duas coisas:
• Caso o usuários colocasse diversos espaços no prompt, o código não entenderia como campo vazio. Com esse bug, o valor iria ser repassado e estava saindo como "neutro";
• Seria interessante uma forma de verificar se o usuário está digitando somente números de alguma outra forma.
Com isso, utilizei a Luri para me explicar maneiras de resolver esses pontos.
Ela me ensinou sobre o método ".trim()" para retirar os espaços e sobre e a função isNaN para aplicar na condicional if para validar se o usuário digitou um número ou não.
Com isso, meu segundo código ficou assim:
alert('Teste de verificação de números positivos e negativos.');
let numeroUsuario = prompt('Digite um número: ');
//Retira todos os espaços do prompt
numeroUsuario = numeroUsuario.trim();
console.log('Número digitado: ', numeroUsuario);
//Verifica se o campo está vazio.
if (numeroUsuario == '') {
console.log('O campo está vazio.');
alert('O campo está vazio. Atualize a página e tente novamente.');
} else {
//Verifica se o conteúdo digitado não é um número.
if (isNaN(numeroUsuario)) {
console.log('O valor ', numeroUsuario, ' não corresponde a um número.')
alert('Por favor, digite apenas números.');
} else {
//Números positivos.
if (numeroUsuario > 0) {
console.log('O número ', numeroUsuario, ' é maior do que 0.');
alert('O número ' + numeroUsuario + ' é positivo.');
//Verificando o número neutro.
} else if (numeroUsuario == 0) {
console.log('O número ', numeroUsuario, ' é neutro.');
alert('O número ' + numeroUsuario + ' é considerado neutro.');
}
//Números negativos.
else {
console.log('O número ', numeroUsuario, ' é menor do que 0.');
alert('O número ' + numeroUsuario + ' é negativo.');
}
}
}
E é isso, agradeço que leu até aqui. Espero que esse código auxilie quem esteja com dúvidas.
Caso vejam algo errado, por favor me informem aqui nos comentários. melhorias são sempre bem-vindas! :)