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

[Sugestão] Minhas resoluções para o exercício de números positivos e negativos.

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! :)

2 respostas
solução!

Oi, Arthur! Como vai?

Seu cuidado com as validações extras chamou bastante atenção! A forma como usou .trim() para evitar entradas com espaços em branco e isNaN para verificar se o valor é numérico mostra uma ótima evolução no seu raciocínio lógico.

Uma dica interessante para o futuro é converter a entrada do usuário para número com parseFloat antes das comparações, garantindo maior controle sobre os dados:


let numero = parseFloat(prompt('Digite um número:'));
if (!isNaN(numero)) {
    console.log(numero);
}

Esse código usa parseFloat para converter o texto em número e o isNaN garante que seja tratado apenas valor numérico.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pela resposta, Armano!

Vendo as resoluções de outros alunos aqui no fórum, acabei descobrindo o parseInt e já estou aplicando em meus códigos mais recentes.