2
respostas

[Dúvida] Duvida sobre IF bandasRegistradas

Estou com uma duvida com relação ao MenuRegistrarBanda, quando fui testar, acabei digitando uma banda que já existia no meu dicionário, então o código deu erro, tentei usar uma estrutura IF para fazer a validação se o nome da banda já existe ou não no dicionário, ate deu certo, mas após a banda ser criada, o código retorna para a primeira validação IF e encerra como se a banda já estivesse registrada (também adicionei que o usuário deveria, após cadastrar o nome, informar o gênero da banda)

Como eu faria para resolver a situação?

internal class MenuRegistrarBanda : Menu
{
    public void Executar(Dictionary<string, Banda> bandasRegistradas)
    {
        Console.Clear();
        ExibirTituloDaOpcao("Registro das bandas");
        Console.Write("Digite o nome da banda que deseja registrar: \n");
        string nomeDaBanda = Console.ReadLine()!;
        if (bandasRegistradas.ContainsKey(nomeDaBanda))
        {
            zerarTela($"A banda {nomeDaBanda} ja esta registrada");
        }
        else if(nomeDaBanda == null)
        {
            zerarTela("Por favor, digite um nome valido");
        }
        else
        {
            Console.WriteLine($"Qual o genero da banda {nomeDaBanda}?");
            string nomeGenero = Console.ReadLine()!;

            Banda banda = new Banda(nomeDaBanda, nomeGenero);
            bandasRegistradas.Add(nomeDaBanda, banda);

            zerarTela($"A banda {nomeDaBanda} foi registrada com sucesso!");
        }
    }
}
2 respostas

Olá, tudo bem?

Pode ser que o erro esteja nesse trecho:

            Banda banda = new Banda(nomeDaBanda, nomeGenero);
            bandasRegistradas.Add(nomeDaBanda, banda);

No caso, "nomeGenero". Poderia compartilhar sua classe banda para analisar melhor?

Abraço!

Sim sim, segue a classe abaixo

internal class Banda
{
    private List<Album> albuns = new List<Album>();
    private List<Avaliacao> notas = new();

    public Banda(string nome, string genero)
    {
        Nome = nome;
        Genero = genero;
    }

    public string Nome { get; }
    public string Genero { get; }
    public List<Album> Albuns => albuns;
    public double Media
    {
        get
        {
            if (notas.Count == 0) return 0;
            else return notas.Average(a => a.Nota);
        }
    }