Oi Charles,
Seu código está quase perfeito! 👍
A lógica para obter o mês está funcionando, mas notei alguns pontos que podem ser melhorados.
O problema principal está na condição if (int.parse(mes!) > 1 && int.parse(mes!) < 12)
. Ela não cobre todos os casos válidos, pois exclui os meses 1 e 12. O correto seria if (int.parse(mes!) >= 1 && int.parse(mes!) <= 12)
.
Além disso, você está chamando digiteOMes()
e mesDigitado()
novamente dentro do else
, o que pode levar a um loop caso o usuário continue digitando valores inválidos.
Uma solução seria usar um loop while
para garantir que o usuário digite um valor válido antes de prosseguir.
Aqui está uma sugestão de como você pode refatorar seu código:
import 'dart:io';
void main() {
String? mes;
String? obterMes() {
String? entrada;
do {
print('Digite um número de 1 a 12');
entrada = stdin.readLineSync();
if (entrada == null || entrada.isEmpty) {
print('Entrada inválida. Tente novamente.');
}
} while (entrada == null || entrada.isEmpty);
return entrada;
}
void mesDigitado(String mes) {
switch (mes) {
case '1':
print('Janeiro');
break;
case '2':
print('Fevereiro');
break;
case '3':
print('Março');
break;
case '4':
print('Abril');
break;
case '5':
print('Maio');
break;
case '6':
print('Junho');
break;
case '7':
print('Julho');
break;
case '8':
print('Agosto');
break;
case '9':
print('Setembro');
break;
case '10':
print('Outubro');
break;
case '11':
print('Novembro');
break;
case '12':
print('Dezembro');
break;
default:
print('Mês inválido');
}
}
do {
mes = obterMes();
if (int.tryParse(mes!) == null || int.parse(mes!) < 1 || int.parse(mes!) > 12) {
print('Mês digitado não pode ser menor que 1 nem maior que 12. Tente novamente.');
mes = null;
}
} while (mes == null);
mesDigitado(mes);
}
Nessa versão, usei um loop do...while
para garantir que o usuário digite um número válido entre 1 e 12.
Também adicionei um default
no switch
para tratar casos inválidos. 💪
Para saber mais: Documentação oficial do Dart sobre controle de fluxo. Este link leva à documentação oficial do Dart, onde você pode aprender mais sobre estruturas de controle como if
, else
, switch
e loops.
Continue praticando e explorando as possibilidades do Dart! 💻