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

[Projeto] Exercício: Contagem de números

import { createInterface } from "readline";

const rl = createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.question("Escolha um valor final\n> ", (input) => {
  const numero = Number(input);

  if (Number.isNaN(numero) || !Number.isInteger(numero) || numero < 1) {
    console.log("Digite um número inteiro maior que 0");
    rl.close();
    return;
  }

  for (let i = 1; i <= numero; i++) {
    console.log(i);
  }

  rl.close();
});
3 respostas

Oi, Vitor! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você utilizou bem o Number.isNaN() e o Number.isInteger() para validar a entrada antes de executar o laço. Isso mostra uma boa preocupação com a qualidade do programa e evita comportamentos inesperados. Também ficou bem organizado o uso do return para encerrar a execução quando o valor digitado não for válido.

Uma dica interessante para o futuro é utilizar o metodo String.trim() antes da conversao do numero, para evitar problemas com espacos digitados pelo usuario. Veja este exemplo:


const entrada = input.trim();
const numero = Number(entrada);

console.log(numero);

Nesse exemplo, o trim() remove espacos extras antes e depois do texto digitado, deixando a validacao mais segura.

Como esta sendo sua experiencia praticando JavaScript ate agora?

Conteúdo relacionado:
Alura

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

Oi, Monalisa! Muito obrigado pelo feedback e pela sugestão do trim().

Minha experiência com JavaScript está sendo ótima até agora, estou começando a entender melhor a lógica por trás das validações e da organização do código. xD

Pelos testes que fiz, percebi que o Number() já ignora espaços no começo e no fim, espaços entre números viram NaN e strings vazias acabam virando 0. Como essas situações já estão sendo tratadas no código atual, fiquei com uma dúvida: mesmo assim ainda é interessante usar trim() como boa prática para deixar a validação mais segura e previsível?

solução!

Oi, Vitor!

Nesse caso específico, o uso do trim() não é obrigatório para o funcionamento do seu código, porque sua validação já cobre entradas inválidas corretamente. O ponto do trim() entra mais como uma boa prática de sanitização de entrada, deixando o dado tratado antes de qualquer conversão.

Por exemplo, imagine que futuramente você queira validar o texto antes de converter para número ou comparar diretamente a entrada digitada. Nesse cenário, o trim() ajuda a deixar o comportamento mais previsível.

Fico à disposição. Abraços e bons estudos!