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

26/01/2020

10

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
 
            }
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.
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
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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar