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á!!!
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
Curtir tópico
+ 0
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

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
Clique aqui para fazer login e interagir na Comunidade :)