Meu Do/While funciona, porém, é o ideal?

26/01/2020

0

Boa noite!!

Estou tentando aplicar uma repetição utilizando o WHILE utilizando também da condição IF, que retorna uma mensagem para o usuário caso o mesmo digite um valor inválido. Apesar de estar funcionando, eu gostaria de saber se essa é a maneira mais adequada e se existe uma forma mais prática de se resolver situações como essa. Obrigado desde já!!!

string dia;
            string mes;

            do
            {
                Console.WriteLine("Em que dia você nasceu?");
                dia = Console.ReadLine();

                if (Convert.ToInt32(dia) > 31)

                {
                    Console.WriteLine("Digite dia válido");
                }
            }

            while (Convert.ToInt32(dia) > 31);
            {
//repare que aqui eu não escrevo nada
            }

            do
            {
                Console.WriteLine("Em que mês você nasceu?");
                mes = Console.ReadLine();
                if (Convert.ToInt32(mes) > 12)

                {
                    Console.WriteLine("Digite mês válido");
                }
            }

            while (Convert.ToInt32(mes) > 12);
            {
               //repare que aqui eu não escrevo nada
 
            }
Gerson Bueno

Gerson Bueno

Responder

Post mais votado

27/01/2020

Pelo que parece, o seu input também está aceitando letras e números negativos, isso pode ser um problema.

Mauricio Espido

Mauricio Espido
Responder

Mais Posts

27/01/2020

Gerson Bueno

Pelo que parece, o seu input também está aceitando letras e números negativos, isso pode ser um problema.


Obrigado por ajudar! Entendo que ainda falta tratar esse problema dentro de uma repetição, vou trabalhar nisso também. Mas em relação a construção da estrutura DO/WHILE, você sabe se está de acordo com as boas práticas? O fato de eu não ter colocado nada dentro do WHILE me deixa ressabiado, parece que tá errado de alguma forma, mesmo que esteja funcionando.
Responder

27/01/2020

Mauricio Espido

Pode resumir assim também, não testei mas acho que funciona e também removi sua string, sendo que o Console.ReadLine() é uma string, caso não funcionar, use dia_mes = Console.ReadLine(). Não vejo a necessidade de criar strings se ela é usada nos dois whiles.
            do
            {
                Console.WriteLine("Em que dia você nasceu?");
 
                if (Convert.ToInt32(Console.ReadLine()) > 31)
 
                {
                    Console.WriteLine("Digite dia válido");
                }
            } while (Convert.ToInt32(Console.ReadLine()) > 31)
 
            do
            {
                Console.WriteLine("Em que mês você nasceu?");

                if (Convert.ToInt32(Console.ReadLine()) > 12)
 
                {
                    Console.WriteLine("Digite mês válido");
                }
            }while (Convert.ToInt32(Console.ReadLine()) > 12)
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar