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

AJUDA !! urgente

Olá prof, preciso de ajuda, estão fazendo algo parecido com a aula, porém é de livros.

meu projeto é fazer um biblioteca, onde o usuário irá cadastrar o livro com algumas informações como: nome, nome do autor, sinopse e etc... estou armazenando essas informações em uma List livros. o problema é que na hora que eu vou listar ele vem duplicado. como? eu cadastro dois livros, porém na hora de listar ele vem somente com as informações do último livro cadastrado e duplicado. O que eu faço ? :(

![IMÉTODO CADASTRAR](https://cdn1.gnarususercontent.com.br/1/1302104/20320449-2c8f-4478-8366-265d5db43c21.png)  

MÉTODO LISTAR

![CLASSE LIVRO](https://cdn1.gnarususercontent.com.br/1/1302104/d473d0a2-db02-49bc-a872-e40ccffa134e.png)
3 respostas

Olá Claudia!

Eu digitei seu código aqui e achei alguns pontos... estranhos... ?!?

Eu não entendi a classe "Autor"... você pode colocar o código fonte?

Na função "ListarTodosOsLivrosCadastrados()", o seu "For Each" está usando o "livro." ao invés de "item"?

O código fonte abaixo está igual ao seu?

Classe "Program.cs":

using LivrariaOficial;

CadastrarAutor();

void CadastrarAutor()
{
    Console.Clear();
    Console.WriteLine("                                      ");
    Console.WriteLine("        INSIRA O NOME DO AUTOR:       ");
    string nomeAutor = Console.ReadLine();
    Console.WriteLine("======================================");
    Console.WriteLine("   INSIRA O ANO QUE NASCEU O AUTOR:   ");
    int anoAutor = int.Parse(Console.ReadLine());
    Console.WriteLine("======================================");
    Console.WriteLine(" INSIRA A CIDADE QUE NASCEU O AUTOR:  ");
    string cidade = Console.ReadLine();
    Console.WriteLine("======================================");
    Console.WriteLine(" INSIRA A CIDADE QUE NASCEU O AUTOR:  ");
    int livropubli = int.Parse(Console.ReadLine());
    Console.WriteLine("");

    //CADASTRAR autor
    Autor autores = new();
    autores.SetNome(nomeAutor);
    autores.SetAnoAutor(anoAutor);
    autores.SetCidade(cidade);
    autores.SetLivrosPublicados(livropubli);
    autores.Add(autores);

    Console.WriteLine("     AUTOR CADASTRADO COM SUCESSO     ");
    Console.WriteLine("======================================");

    Thread.Sleep(1000);
    Console.Clear();
    AutoresCadastrado(autores);
}

static void AutoresCadastrado(Autor autores)
{
    Console.WriteLine($"Nome do Autor: {autores}.Nome");
    Console.WriteLine($"Cidade Natal do Autor: {autores.Cidade}");
    Console.WriteLine($"Ano do Nascimento do Autor: {autores.AnoNas}");
    Console.WriteLine($"Quantidade de Livros Publicados pelo Autor: {autores.LivrosPublicados}");
}

void ListarTodosOsLivrosCadastrados()
{
    if (Livros.Count <= 0)
    {
        Console.WriteLine("NÃO HÁ LIVROS CADASTRADOS");
    }

    foreach (Livro item in livros)
    {
        Console.WriteLine("=============LIVROS CADASTRADOS===============");
        Console.WriteLine(item.Nome);           // livro. ?
        Console.WriteLine(item.Autor);
        Console.WriteLine(item.Sinopse);
        Console.WriteLine(item.Ano);
        Console.WriteLine("=======================");
    }
}

Classe "Livro.cs":

namespace LivrariaOficial;

public class Livro
{
    public string? Nome { get; private set; }

    public string? Autor { get; private set; }

    public string? Sinopse { get; private set; }

    public int Ano { get; private set; }

    public void SetNome(string nome)
    { 
        this.Nome = nome; 
    }

    public void SetAutor(string autor)
    {
        this.Autor = autor;
    }

    public void SetSinopse(string sinopse)
    {
        this.Sinopse = sinopse;
    }

    public void SetAno(int ano)
    { 
        this.Ano = ano; 
    }
}

Classe "Autor.cs":

namespace LivrariaOficial;

public class Autor
{
    public string? NomeAutor { get; private set; }

    public int AnoNas { get; private set; }

    public string? Cidade { get; private set; }

    public int LivrosPublicados { get; private set; }

    public void SetNome(string nome)
    {
        this.NomeAutor = nome;
    }

    public void SetAnoAutor(int anoAutor)
    {
        this.AnoNas = anoAutor;
    }

    public void SetCidade(string cidade)
    {
        this.Cidade = cidade;
    }

    public void SetLivrosPublicados(int livropubli)
    {
        this.LivrosPublicados = livropubli;
    }
}

{}'s,

Fabio I.

Olá prof, obg por responder, agora está corrigido rsrs, consegui resolver aqui, agora já está listando os os livros que eu cadastro normalmente.

agora estou na parte de filtrar. Quero que quando o usuário digite o nome do livro apareça a informações que foram cadastradas nele porém esta dando um erro no retorno da condição;

 Aqui estão os cases, primeiro estou fazendo Pelo nome do livro

Porém no método ConsultarNomeLivro da erro no return

solução!

Claudia,

A sua função "ConsultaNomeLivro" está retornando uma "string", mas o seu "return" está retornando um "livro". Não deveria ser o "NomeLivro" o returno da função?

string ConsultaNomeLivro(string NomeLivro)
{
    Livro livro = null;

    for (int i = 0; i < livros.Count; i++)
    {
        if (livros[i].Nome.Equals(NomeLivro))
        {
            livro = livros[i];
        }
    }

    return livro;
}

[]'s,

Fabio I.

P.S.: Se te ajudei não esqueça de fechar o tópico e me pontuar.