Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lista de exercícios - 3

  1. Dando uma nova chance no retorno de mês
import 'dart:io';

// Função para validar a entrada do usuário
bool validarEntrada(String entrada, int mes) { //função bool que retorna true ou false
  try {
    // Verifica se é um número e está no intervalo correto
    if (mes >= 1 && mes <= 12) {
      return true;
    } else {
      print('');
      print('ERRO: O número digitado está fora do intervalo (1-12).');
      return false;
    }
  } catch (e) { // função catch para tratar erros
    print('');
    print('ERRO: Você não digitou um número válido.');
    return false;
  }
}

void main() { //função principal
    print('========================================');
    print('   DESCOBRINDO SEU SIGNO POR MÊS');
    print('========================================');
    print('');
    print('Digite um número de 1 a 12 para descobrir');
    print('o signo predominante do mês:');
    String? entrada = stdin.readLineSync();

    if (entrada != null) {
      try { // função try para tratar erros
        int mes = int.parse(entrada);

        // Valida a entrada usando a função
        if (validarEntrada(entrada, mes)) {
          // Processa o mês válido

    switch (mes) {
    case 1:
        print('Janeiro');
        print('');
        print('Signo: Capricórnio (22/12 - 19/01)');
        print('Personalidade: Disciplinado, ambicioso, responsável e determinado');
        print('Pedra: Ônix ou Granada');
        break;

      case 2:
        print('Fevereiro');
        print('');
        print('Signo: Aquário (20/01 - 18/02)');
        print('Personalidade: Inovador, independente, humanitário e original');
        print('Pedra: Ametista ou Água-marinha');
        break;

      case 3:
        print('Março');
        print('');
        print('Signo: Peixes (19/02 - 20/03)');
        print('Personalidade: Intuitivo, compassivo, sensível e sonhador');
        print('Pedra: Água-marinha ou Ametista');
        break;

      case 4:
        print('Abril');
        print('');
        print('Signo: Áries (21/03 - 19/04)');
        print('Personalidade: Corajoso, energético, impulsivo e líder nato');
        print('Pedra: Diamante ou Rubi');
        break;

      case 5:
        print('Maio');
        print('');
        print('Signo: Touro (20/04 - 20/05)');
        print('Personalidade: Paciente, leal, prático e persistente');
        print('Pedra: Esmeralda ou Quartzo Rosa');
        break;

      case 6:
        print('Junho');
        print('');
        print('Signo: Gêmeos (21/05 - 20/06)');
        print('Personalidade: Comunicativo, versátil, curioso e adaptável');
        print('Pedra: Ágata ou Citrino');
        break;

      case 7:
        print('Julho');
        print('');
        print('Signo: Câncer (21/06 - 22/07)');
        print('Personalidade: Protetor, emocional, intuitivo e carinhoso');
        print('Pedra: Pérola ou Pedra da Lua');
        break;

      case 8:
        print('Agosto');
        print('');
        print('Signo: Leão (23/07 - 22/08)');
        print('Personalidade: Confiante, generoso, carismático e criativo');
        print('Pedra: Rubi ou Citrino');
        break;

      case 9:
        print('Setembro');
        print('');
        print('Signo: Virgem (23/08 - 22/09)');
        print('Personalidade: Analítico, organizado, detalhista e prático');
        print('Pedra: Safira ou Cornalina');
        break;

      case 10:
        print('Outubro');
        print('');
        print('Signo: Libra (23/09 - 22/10)');
        print('Personalidade: Equilibrado, diplomático, social e justo');
        print('Pedra: Opala ou Turmalina Rosa');
        break;

      case 11:
        print('Novembro');
        print('');
        print('Signo: Escorpião (23/10 - 21/11)');
        print('Personalidade: Intenso, determinado, magnético e transformador');
        print('Pedra: Topázio ou Obsidiana');
        break;

      case 12:
        print('Dezembro');
        print('');
        print('Signo: Sagitário (22/11 - 21/12)');
        print('Personalidade: Otimista, aventureiro, filosófico e livre');
        print('Pedra: Turquesa ou Topázio Azul');
        break;
        default:
        print('Número inválido');
        break;
      }
    }
  } catch (e) {
      print('');
      print('ERRO: Você não digitou um número válido.');
      print('Por favor, execute o programa novamente e digite apenas números.');
    }
  } else {
    print('');
    print('ERRO: Nenhuma entrada foi fornecida.');
    print('Por favor, execute o programa novamente.');
  }
  print('');
  print('========================================');
  print('     Obrigado por usar o programa!');
  print('========================================');
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Olá, José, como vai?

Seu código está muito bem elaborado e organizado, especialmente no tratamento de erros e na estrutura de mensagens ao usuário. A separação da função validarEntrada para verificar os valores e lidar com exceções foi uma boa escolha, pois deixa o código mais limpo e fácil de entender.

No entanto, para atender exatamente ao pedido do exercício, permitir que o usuário tente novamente caso insira um valor inválido, seria interessante adicionar a recursão, ou seja, fazer a função chamar a si mesma quando o valor for incorreto.

Continue compartilhando seus exercícios aqui no fórum, ele está sempre à disposição para acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!