Duvida: Não consigo retornar os valores armazenados no Array

3 respostas
Y

Pessoal peço ajuda pois não consigo fazer com que os valores armazenados no Array sejam retornados.

import javax.swing.JOptionPane;

/**
 *
 * @author yracler
 */
public class Ex1 {

    private static String[] listaLivros;
    private static String[] listaAutores;
    private static Livro[] meusLivros;
    private static String menu = "Gerenciador de Livros\n\n"
            + "1 --> Cadastrar um autor\n"
            + "2--> Cadastrar um livro\n"
            + "3 --> Incluir um autor já cadastrado num livro também cadastrado\n"
            + "4 --> Consultar todos os livros de um determinado autor\n"
            + "5 --> Listar todos os autores\n"
            + "6 --> Listar todos os livros\n"
            + "7 --> Sair";

    public static void main(String[] args) {

        // escolha do usuario
        String opcao = "";
        do {
            opcao = JOptionPane.showInputDialog(menu);
            if (opcao.equals("1")) {
//incluir autor
                cadastrarAutor();

            } else if (opcao.equals("2")) {
//incluir livro
                cadastrarLivro();

            } else if (opcao.equals("3")) {
// incluir autor no livro
                incluirAutorext();

            } else if (opcao.equals("4")) {
// consultar livros por autor
                consultarLivrosAutores();

            } else if (opcao.equals("5")) {
// listar autores
                listarAutores();

            } else if (opcao.equals("6")) {
// listar livros
                listarLivros();
            }
        } while (!opcao.equals("7")); // comparacao usando String
    } // fim do main

    public static void cadastrarLivro() {

// inicializacao do objeto Livro
        Livro meuLivro = new Livro();

// utiliza o metodo showInputDialog para perguntar a quantidade e
// converte o valor de String para inteiro e armazena na variavel
// local quantidade.
      int quantidade = Integer.parseInt(JOptionPane
.showInputDialog("Quantos Livros deseja Cadastrar?"));
        
        listaLivros = new  String [quantidade];

// inicializa o ARRAY com tamanho informado pelo usuario

// percorre todo tamanho do ARRAY e cadastra seus elementos

        for (int i = 0; i < listaLivros.length; i++) {
           
            JOptionPane.showMessageDialog(null, "Digite os dados do " + (i + 1) + "º Livro a ser inserido ");

            String titulo = JOptionPane.showInputDialog("Digite o titulo do" + (i + 1) + "º  Livro ");
            meuLivro.setTitulo(titulo);
            String isbn = JOptionPane.showInputDialog("Digite o código ISBN do" + (i + 1) + "º Livro");
            meuLivro.setIsbn(isbn);
            String editora = JOptionPane.showInputDialog("Digite a editora do" + (i + 1) + "º Livro");
            meuLivro.setEditora(editora);
            int paginas = Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade de páginas do" + (i + 1) + "º Livro "));
            meuLivro.setPaginas(paginas);   
            
            

            JOptionPane.showMessageDialog(null, "Livro inserido com sucesso");
            
        }

    }

   private static void listarLivros( ) {


        if (listaLivros != null) {
// acumula a listagem numa variavel local
  String listaLivrosTemp = "Listagem de Livros \n \n";

  for (int i = 0; i < listaLivros.length; i++) {
listaLivrosTemp += listaLivros[i];

// exibe na tela a listagem dos Livros

                JOptionPane.showMessageDialog(null, "O " + (i + 1) + "º Livro é: " + listaLivros[i].getTitulo()
                        + "\nCódigo ISBN: " + meusLivros[i].getIsbn()
                        + "\nQuantidade de Páginas: " + meusLivros[i].getEditora()
                        + "\nEditora: " + meusLivros[i].getPaginas()
                        + "\n\n");




            }
        }
    }
}
****************************************************************************************** Classe Livro
package atividade3;

/**
 *
 * @author yracler
 */
public class Livro {

    public String titulo;
    public Autor[] autores = new Autor[5];
    public String isbn;
    public int paginas;
    public String editora;

//operacoes

public Livro(){

    }

    //construtor personalizado

public Livro (String titulo, String isbn, int paginas, String editora){

    // inicializa o objeto Livro

    this.titulo = titulo;
    //this.autores =  Autor;
    this.isbn = isbn;
    this.paginas = paginas;
    this.editora = editora;

    }


public void adiciona (Autor autores){
    for (int i = 0; i <this.autores.length; i++){
        if(this.autores == null){
            //this.autores = autores;
        }
    }
}

    /**
     * @return the titulo
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * @param titulo the titulo to set
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    /**
     * @return the isbn
     */
    public String getIsbn() {
        return isbn;
    }

    /**
     * @param isbn the isbn to set
     */
    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    /**
     * @return the paginas
     */
    public int getPaginas() {
        return paginas;
    }

    /**
     * @param paginas the paginas to set
     */
    public void setPaginas(int paginas) {
        this.paginas = paginas;
    }

    /**
     * @return the editora
     */
    public String getEditora() {
        return editora;
    }

    /**
     * @param editora the editora to set
     */
    public void setEditora(String editora) {
        this.editora = editora;
    }
}

3 Respostas

C

Olá.

Aparentemente, o erro está entre as linhas 72 e 86. Você está setando os valores corretamente no objeto, mas não está reservando a lista de objetos criados em lugar nenhum.

Att.

d34d_d3v1l

Que tal usar um arrayList ?

http://www.athanazio.com/2006/09/06/usando-arraylist-e-vector/

Se o link nao foi o suficiente para vc aprender,
pesquise aqui no forum,
tem muito material legal
:smiley:

d34d_d3v1l

ahh
o erro está aqui

listaLivros = new  String [quantidade];

ele é do tipo String e você ta tratando ele como objeto lá na frente:

OptionPane.showMessageDialog(null, "O " + (i + 1) + "º Livro é: " + listaLivros[i].getTitulo()
Criado 19 de fevereiro de 2011
Ultima resposta 19 de fev. de 2011
Respostas 3
Participantes 3