Ir ao conteúdo

Posts recomendados

Postado

Oi pessoal, eu estou tentando criar um menu que preenche uma LinkedList, no case 1 do switch eu coloquei o preenchimento desse linkedlist, porém quando eu tento acessá-lo no case 2 a lista aparece como vazia, podem me ajudar como eu faço pra acessar os dados inseridos no case 1 pro case 2?

package biblioteca;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.lang.Iterable;


public class Livros {
 private String titulo;
 private String autor;
 private String codigo; 
 
    public String getTitulo() {
        return titulo;
    }

    
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    
    public String getAutor() {
        return autor;
    }

    
    public void setAutor(String autor) {
        this.autor = autor;
    }

    
    public String getCodigo() {
        return codigo;
    }

    
    public void setCódigo(String codigo) {
        this.codigo = codigo;
    }
    
  public void menu(){  
    int opcao = 0;
        int b=0;
           
          
        
        do {
		System.out.println("\n\n                          UNIDESC");
				
		System.out.println("\n                  =========================");
		System.out.println("                  |     1 - REGISTRAR   |");
		System.out.println("                  |     2 - PESQUISAR   |");
		System.out.println("                  |     3 - SAIR        |");
		System.out.println("                  =========================\n");
                
                Scanner ler = new Scanner (System.in);
		opcao = ler.nextInt();
		System.out.print("\n");
                LinkedList lista = new LinkedList<>();
		switch (opcao) {
		case 1:
                        System.out.println("Autor:");
                autor = ler.next();

                System.out.println("Titulo:");
                titulo = ler.next();

                System.out.println("Código de letras:");
                codigo = ler.next();

                if (autor == null || titulo  == null || codigo == null) {
                    System.out.println("Por favor, informe todos os dados");
                    menu();
                } else {
                    
                    lista.add(autor);
                    lista.add(titulo);
                    lista.add(codigo);
                    System.out.println("salvo com sucesso");
                    System.out.println("Informe um titulo");
                    String tit = ler.next();
                    System.out.println(lista.contains(tit));
                    System.out.println(Arrays.toString(lista.toArray()));
                         
                    

                    menu();
                    
                }
                   break; 
			
		case 2:
                
                
                System.out.println(Arrays.toString(lista.toArray()));

		System.out.println("1 - Pesquisar por titulo\n2 - Pesquisar por autor\n3 - Pesquisar por código");
                int novaOpcao = ler.nextInt();

                if (novaOpcao == 1) {
                    System.out.println("Informe um titulo");
                    String tit = ler.nextLine();
                System.out.println(lista.contains(tit));
                    if (lista.contains(tit)== true) {
                        System.out.println("TEM");
                    }
                    menu();
                }

                if (novaOpcao == 2) {
                    System.out.println("Informe um autor");
                    String ba = ler.nextLine();
                  System.out.println(lista.contains(ba));
                    
                    
                    menu();
                }

                if (novaOpcao == 3) {
                    System.out.println("Informe um titulo");
                    String tit = ler.next();
                    

                            
                    menu();
                }
             break;
            
		
		
		}
	} while (opcao != 3);
        System.out.println("PROGRAMA ENCERRADO");
}
}

No caso esse array to string sai vazio no case 2.

Postado

Basicamente, a cada ciclo do menu é criada uma lista nova vazia. E essas listas são criadas uma por cima da outra, dessa maneira, na primeira iteração você adiciona um livro, daí o ciclo termina e é criada uma nova lista vazia, aí quando você tenta acessar, não recebe nada.

 

Algumas dicas:

  • Separe o programa em classes bem definidas. Por exemplo, a classe Livro é uma classe de modelagem, ela não precisa (e nem deveria) ter um método menu, pois não é responsabilidade dela.
  • Crie uma classe responsável por armazenar a lista de Livro, nessa classe você implementa as operações de inserção, remoção, consulta, etc.
  • Crie uma classe separada para ser sua classe Principal, ela vai possuir o método main e é nela que você cria a classe que gerencia os livros (item anterior). Nessa classe você também pode implementar o menu.
  • Caso não queira (recomendável), você pode criar uma classe para trabalhar com a interação com o usuário, por exemplo o menu, as entradas de dados do teclado, etc.

Organiza esse código (recomendo começar de novo), separa as classes com calma e lembre-se: "Uma classe só deve fazer o que ela se propõe a fazer".

 

Qualquer dúvida estamos aqui.

 

Segue um esqueleto aplicando o que eu disse:

Livro

Spoiler

package biblioteca;

import java.util.Objects;

public class Livro {

    private String codigo;
    private String titulo;
    private String autor;

    public Livro() {
    }

    public Livro(String codigo, String titulo, String autor) {
        this.codigo = codigo;
        this.titulo = titulo;
        this.autor = autor;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Livro livro = (Livro) o;
        return Objects.equals(codigo, livro.codigo);
    }

    @Override
    public int hashCode() {
        return codigo != null ? codigo.hashCode() : 0;
    }

    @Override
    public String toString() {
        return "Livro{" +
                "codigo='" + codigo + '\'' +
                ", titulo='" + titulo + '\'' +
                ", autor='" + autor + '\'' +
                '}';
    }
}

 

 

Biblioteca

Spoiler

package biblioteca;

import java.util.LinkedList;
import java.util.List;

public class Biblioteca {

    private List<Livro> livros = new LinkedList<>();

    public Biblioteca() {
    }

    public void adicionar(Livro livro) {
        // ...
    }

    public void listar() {
        // ...
    }

    public void remover(String codigo) {
        // ...
    }

    public List<Livro> getLivros() {
        return livros;
    }
}

 

 

Interador

Spoiler

package biblioteca;

import java.util.Scanner;

public class Interador {

    private static final Scanner SCANNER = new Scanner(System.in);

    public Livro getLivro() {
        Livro livro = new Livro();
        // ...
        return livro;
    }

    public int menu() {
        int opcao = 0;
        // ...
        return opcao;
    }
}

 

 

Principal

Spoiler

package biblioteca;

public class Principal {

    public static void main(String[] args) {
        Biblioteca biblioteca = new Biblioteca();
        Interador interador = new Interador();

        // ...

        System.exit(0);
    }
}

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!