Fórum Meu Do/While funciona, porém, é o ideal? #607747

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á!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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

Gostei + 1

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

Gostei + 0

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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

Gostei + 1

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

Aceitar