Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] O programa só registra uma banda

O programa só registra uma banda , estou tentando achar o problema no código mas não encontrei

// Screen Sound
string mensagemDeBoasVindas = "Boas vindas ao Screen Sound";
List<string>  ListaDasBandas = new List<string>(); // Cria uma lispar para bandas
void ExibirLogo(){
    // a @,Verbatim Lite(Verbatim literal), mostra a string completa
Console.WriteLine(@"██████╗░█████╗░██████╗░███████╗███████╗███╗░░██╗  ░██████╗░█████╗░██╗░░░██╗███╗░░██╗██████╗░
██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝████╗░██║  ██╔════╝██╔══██╗██║░░░██║████╗░██║██╔══██╗
╚█████╗░██║░░╚═╝██████╔╝█████╗░░█████╗░░██╔██╗██║  ╚█████╗░██║░░██║██║░░░██║██╔██╗██║██║░░██║
░╚═══██╗██║░░██╗██╔══██╗██╔══╝░░██╔══╝░░██║╚████║  ░╚═══██╗██║░░██║██║░░░██║██║╚████║██║░░██║
██████╔╝╚█████╔╝██║░░██║███████╗███████╗██║░╚███║  ██████╔╝╚█████╔╝╚██████╔╝██║░╚███║██████╔╝
╚═════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚═╝░░╚══╝  ╚═════╝░░╚════╝░░╚═════╝░╚═╝░░╚══╝╚═════╝░");
Console.WriteLine("****************************");
Console.WriteLine("Olá, {0}!", mensagemDeBoasVindas);
//Console.WriteLine(mensagemDeBoasVindas);
Console.WriteLine("*********************");
}
void ExibirOpcoesDoMenu(){
    ExibirLogo();
    //Opções
    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");
    //Usa console Write para ficar na mesma linha
    Console.Write("\nDigite sua opção: ");
    string opcaoEscolhida=Console.ReadLine()!;//A exclamao impede o acesso ao valor NULL
    int opcaoEscolhidaNumerica = int.Parse(opcaoEscolhida); // converte a String em Inteiro
    /*if(opcaoEscolhidaNumerica == 1){
    Console.WriteLine("Você digitou a opção " + opcaoEscolhida);
     else if (opcaoEscolhidaNumerica == 2)
    {
    ConsoleWriteLine("Você digitou a opção " + opcaoEscolhida)
    }*/

    switch (opcaoEscolhidaNumerica){
        case 1:
            RegistrarBanda();
            break;
        case 2:
            MostrarBandasRegistradas();
            break;
        case 3:
            Console.WriteLine("Você escolheu a opção " +opcaoEscolhidaNumerica);
            break;
        case 4:
            Console.WriteLine("Você escolheu a opção " +opcaoEscolhidaNumerica);
            break;
        case -1:
            Console.WriteLine("Tchau ;)");
            break;
        default:
            Console.WriteLine("Opção Invalida");
            break;
        }
}
void RegistrarBanda(){
    Console.Clear();//Limpa a Tela
    Console.WriteLine("\n*********************");
    Console.WriteLine("Registro da Banda");
    Console.WriteLine("*********************\n");
    Console.Write("Digite o nome da Banda que deseja registrar: ");
    string nomeDaBanda = Console.ReadLine()!;
    ListaDasBandas.Add(nomeDaBanda);//Adiciona nome da Banda na lista
    Console.WriteLine($"A banda {nomeDaBanda} foi registrada");
    Thread.Sleep(2000);//Espera por 2 milisegundos, 2s
    Console.Clear();
    ExibirOpcoesDoMenu();
}
void MostrarBandasRegistradas(){
    Console.Clear();
    Console.WriteLine("\n*********************");
    Console.WriteLine("Exibir Bandas Registradas");
    Console.WriteLine("*********************\n");
    for (int i = 0; i < ListaDasBandas.Count; i++)//Uso do for para contar os elementos da lista(<list>.Count)
    {
        Console.WriteLine($"Banda:{ListaDasBandas[i]}");
        Console.WriteLine("Digite uma tecla para voltar ao menu principal");
        Console.ReadKey();// Registra qualquer tecla leva ao menu principal
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
}

ExibirOpcoesDoMenu();
2 respostas
solução!

Olá Ivan! Como vai?

O código que você forneceu para a função MostrarBandasRegistradas tem um pequeno problema na estrutura do for e no fluxo de exibição do menu.

Na função MostrarBandasRegistradas, você está chamando ExibirOpcoesDoMenu() dentro do for, o que faz com que o menu seja exibido novamente após a exibição de cada banda. Isso impede que todas as bandas sejam listadas de uma só vez. Aqui está uma correção para essa função:

void MostrarBandasRegistradas(){
    Console.Clear();
    Console.WriteLine("\n*********************");
    Console.WriteLine("Exibindo todas as bandas registradas");
    Console.WriteLine("*********************\n");

    for (int i = 0; i < ListaDasBandas.Count; i++) // Uso do for para contar os elementos da lista
    {
        Console.WriteLine($"Banda: {ListaDasBandas[i]}");
    }

    Console.WriteLine("\nDigite uma tecla para voltar ao menu principal");
    Console.ReadKey(); // Registra qualquer tecla leva ao menu principal
    Console.Clear();
    ExibirOpcoesDoMenu();
}

Com essa alteração, todas as bandas serão listadas antes de pedir para pressionar uma tecla para voltar ao menu principal.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Desculpe, passei o código errado, vou abrir outro tópico