No desafio, decidi adicionar uma verificação usando o método try, para que o programa não terminasse em erro quando o usuário inserisse uma letra em vez de um número no menu principal, porém, ao encerrar o programa com a opção "-1" Aparece o seguinte erro: (nota: Eu digitei "f", depois digitei a opção -1, ambos seguidos por enter.) O estranho é que o mesmo não ocorre com as outras opções.
segue uma filmagem do que acontece: https://1drv.ms/v/s!AuCQ2RL2ysuNsxLT0rhme9mdwbtV
Segue o código utilizado (Tive que tirar a mensagem de boas vindas e os comentários por causa do limite de caracteres):
string mensagemDeBoasVindas = "Boas Vindas ao Screen Sound";
Dictionary<string, List<int>> bandasRegistradas = new Dictionary<string, List<int>>();
bandasRegistradas.Add("Linkin Park", new List<int> { 10, 8, 9 });
bandasRegistradas.Add("The Beatles", new List<int>());
}
void ExibirOpcoesDoMenu()
{
ExibirLogo();
Console.WriteLine("\nDigite 1 para registrar uma banda");
Console.WriteLine("Digite 2 para mostrar todas as bandas");
Console.WriteLine("Digite 3 para avaliar uma banda");
Console.WriteLine("Digite 4 para exibir a média de uma banda");
Console.WriteLine("Digite -1 para sair");
Console.Write("\nDigite a sua opção: ");
string opcaoEscolhida = Console.ReadLine()!;
try
{
int opcaoEscolhidaNumerica = int.Parse(opcaoEscolhida);
}
catch (Exception)
{
Console.WriteLine("\nErro! Digite uma opção válida!");
Thread.Sleep(2500);
Console.Clear();
ExibirOpcoesDoMenu();
}
int opcaoEscolhidaNumericaVerificada = int.Parse(opcaoEscolhida);
switch (opcaoEscolhidaNumericaVerificada)
{
case 1:
RegistrarBanda();
break;
case 2:
MostrarBandasRegistradas();
break;
case 3:
AvaliarUmaBanda();
break;
case 4:
ExibirMediaDaBanda();
break;
case -1:
Console.WriteLine("Tchau tchau ^_~");
break;
default:
Console.WriteLine($"A opção {opcaoEscolhidaNumericaVerificada} é inválida");
break;
}
}
void RegistrarBanda()
{
Console.Clear();
ExibirTituloDaOpcao("Registro de Bandas");
Console.Write("Digite o nome da banda que deseja registrar: ");
string nomeDaBanda = Console.ReadLine()!;
bandasRegistradas.Add(nomeDaBanda, new List<int>());
Console.WriteLine($"A banda {nomeDaBanda} foi registrada com sucesso!");
Thread.Sleep(2500);
Console.Clear();
ExibirOpcoesDoMenu();
}
void MostrarBandasRegistradas()
{
Console.Clear();
ExibirTituloDaOpcao("Exibindo todas as bandas registradas");
foreach (string banda in bandasRegistradas.Keys)
{
Console.WriteLine($"Banda: {banda}");
}
Console.Write("\nPressione uma tecla para voltar ao menu principal");
Console.ReadKey();
Console.Clear();
ExibirOpcoesDoMenu();
}
void AvaliarUmaBanda()
{
Console.Clear();
ExibirTituloDaOpcao("Avaliar Banda");
Console.Write("Digite o nome da banda que deseja avaliar: ");
string nomeDaBanda = Console.ReadLine()!;
if (bandasRegistradas.ContainsKey(nomeDaBanda))
{
Console.Write($"Qual a nota que a banda {nomeDaBanda} merece: ");
int nota = int.Parse(Console.ReadLine()!);
bandasRegistradas[nomeDaBanda].Add(nota);
Console.WriteLine($"\nA nota {nota} foi registrada com sucesso para a banda {nomeDaBanda}!");
Thread.Sleep(3000);
Console.Clear();
ExibirOpcoesDoMenu();
}
else
{
Console.WriteLine($"\nA banda {nomeDaBanda} não foi encontrada!");
Console.Write("Pressione uma tecla para voltar ao menu principal");
Console.ReadKey();
Console.Clear();
ExibirOpcoesDoMenu();
}
}
void ExibirMediaDaBanda()
{
Console.Clear();
ExibirTituloDaOpcao("Mostrar a média de uma banda");
Console.Write("Digite o nome da banda que gostaria de ver a média das notas:");
string nomeDaBanda = Console.ReadLine()!;
if (bandasRegistradas.ContainsKey(nomeDaBanda))
{
string mediaDaBanda = bandasRegistradas[nomeDaBanda].Average().ToString();
Console.WriteLine($"\nA média das notas da banda {nomeDaBanda} é: {mediaDaBanda} ");
Console.Write("\nPressione uma tecla para voltar ao menu principal:");
Console.ReadKey();
Console.Clear();
ExibirOpcoesDoMenu();
}
else
{
Console.WriteLine($"\nA banda {nomeDaBanda} ainda não foi registrada!");
Thread.Sleep(2500);
Console.Clear();
ExibirOpcoesDoMenu();
}
}
void ExibirTituloDaOpcao(string titulo)
{
int quantidadeDeLetras = titulo.Length;
string asteriscos = string.Empty.PadLeft(quantidadeDeLetras, '*');
Console.WriteLine(asteriscos);
Console.WriteLine(titulo);
Console.WriteLine(asteriscos + "\n");
}
ExibirOpcoesDoMenu();