Java.lang.NullpointerExeception[problema solucionado]

9 respostas
T

Boa Tarde,

Como faço para solucionar este problema...O erro ocorre na consulta dos dados.....

import javax.swing.JOptionPane;

public class Livro
{
    		//Criando variáveis para usar nos métodos set e get
    		static int id=-1;
    		static String nome="";
    		static String autor="";
    		static String genero="";
    		static String editora="";


    		//Criando vetor principal
	    	public String[] getLivro()
	    	{
	    		//Criando vetor de string livro contendo 5 posições para conter as 5 informações(id,nome,autor,gen, edit)
	    		String[] livro = new String[5];
	    		//o this indica que é um método. O índice 0 de livro contém todos os ids
	    		//livro[0] recebe ""+(concatenando)this.id pois estamos convertendo um int em string.
	    		livro[0] = ""+this.id;
	    		livro[1] = this.nome;
	    		livro[2] = this.autor;
	    		livro[3] = this.genero;
	    		livro[4] = this.editora;
	    		return livro;
	    	}

	    	//Métodos Set(sem retorno) e Get(com retorno)
	    	public int getId()
	    	{
	    		return this.id;
	    	}
	    	public String getNome()
	    	{
	    		return this.nome;
	    	}
	    	public String getAutor()
	    	{
	    		return this.autor;
	    	}
	    	public String getGenero()
	    	{
	    		return this.genero;
	    	}
	    	public String getEditora()
	    	{
	    		return this.editora;
	    	}
	    	public void setId(int idLivro)
	    	{
	    		this.id = idLivro;
	    	}
	    	public void setNome(String nomeLivro)
	    	{
	    		this.nome = nomeLivro;
	    	}
	    	public void setAutor(String autorLivro)
	    	{
	    		this.autor = autorLivro;
	    	}
	    	public void setGenero(String generoLivro)
	    	{
	    		this.genero = generoLivro;
	    	}
	    	public void setEditora(String editoraLivro)
	    	{
	    		this.editora = editoraLivro;
	    	}


}
import javax.swing.JOptionPane;

public class Principal
{

	 static int j = 0;



		public static void main(String[] args)
		{
			// mostrará o menu incial para a manipulação do programa
			menu();

		}


			public static void cadastro()
			{
			  //Declarando string id já recebendo o que será digitado na input.
				String id = JOptionPane.showInputDialog("Digite o id do livro" );
				String nome = JOptionPane.showInputDialog("Digite o nome do livro");
				String autor = JOptionPane.showInputDialog("Digite o nome do autor");
				String genero = JOptionPane.showInputDialog("Digite o gênero do livro");
				String editora = JOptionPane.showInputDialog("Digite a editora do livro");

               Livro livro[] = new Livro[3];
			   livro[j] = new Livro();

				//Interger.parseInt(recebe)converte a string recebe para int, pois o método setId é do tipo int.
				livro[j].setId(Integer.parseInt(id));
				livro[j].setNome(nome);
				livro[j].setAutor(autor);
				livro[j].setGenero(genero);
				livro[j].setEditora(editora);




                //Criando um vetor de string "getLivro"
				String[] getLivro = livro[j].getLivro();

                String impressao = "";

				for(int i=0; i<getLivro.length; i++)
					impressao += getLivro[i]+"\n";



				 String[] escolha = {"Sim","Não"};

				int op1 = JOptionPane.showOptionDialog(null,"Registro Efetivado\n"+impressao+"\nDeseja continuar cadstrando?", "Biblioteca", JOptionPane.PLAIN_MESSAGE, 1, null, escolha, escolha [0]);
				if(op1 == 0)
				{
			       j++;
			       cadastro();

				}
				else if(op1 == 1)
				{
					j++;
					menu();

				}
			//	orderna(livro[]);

			}

			public static void consulta()
			{
				Object[] cons={"Id do livro", "Título do livro", "Autor do livro", "Gênero do livro", "Editora do Livro"};
			    String inicio = "Título do Livro";
			    Object R = JOptionPane.showInputDialog(null, "Escolha a opção da busca desejada:\n", "Consulta", JOptionPane.QUESTION_MESSAGE, null, cons, inicio);
			    lista(R);
		       // ordena ();





			}

			public static void lista(Object res)
			{

				if(res =="Id do livro" )
			  {
                Livro livro[] = new Livro[3];
                int total = 3;
			  	for(int i=0;i<total;i++)
			  	System.out.println(""+livro[i].getId());





             }

			  else if(res == "Título do livro" )
			  {
			  		String teste = JOptionPane.showInputDialog(  "oi" );


			  }



			}

			public static void ordena (String livro[])
			{
				for(j=0;j<livro.length;j++)
				{
					System.out.println(""+livro);
				}
			}


			public static void menu()
			{

				//Criando um vetor de opções para colocar na OptionPane Menu.
				String[] opcoes={"Cadastro","Consulta","Altera","Sair"};

	           	//op recebe a opção que o usuário escolhe(do vetor de opcoes)
				int op = JOptionPane.showOptionDialog(null, "Menu\n Escolha sua Opção", "Biblioteca", JOptionPane.PLAIN_MESSAGE, 1, null, opcoes, opcoes [0]);
				//Condições para as opções)
				if(op == 0)
				{
					cadastro();

				}
				else if ( op == 1)
				{
					consulta();
				}
			}

		}

Exception in thread "main" java.lang.NullPointerException
at Principal.lista(Principal.java:91)
at Principal.consulta(Principal.java:74)
at Principal.menu(Principal.java:143)
at Principal.cadastro(Principal.java:62)
at Principal.cadastro(Principal.java:56)
at Principal.menu(Principal.java:138)
at Principal.main(Principal.java:13)

9 Respostas

drsmachado

Qual a linha, Lombardeeeeeeeeeeeeeeeeeeemmmmm?

at Principal.lista(Principal.java:91)
T

Não entendi sua resposta… Você pode ser mais específico…

ederfreitas

Você instanciou um array de Livro, porém não há objeto algum neste array, ou seja aponta para Null resultando na mensagem de erro que você postou.

drsmachado

Você postou o código e um monte de comentário desnecessário.
Só esqueceu de dizer EM QUAL LINHA ESTÁ O MALDITO ERRO.
Qual é a droga da linha 91, da classe Principal?

luyz

drsmachado:
Você postou o código e um monte de comentário desnecessário.
Só esqueceu de dizer EM QUAL LINHA ESTÁ O MALDITO ERRO.
Qual é a droga da linha 91, da classe Principal?

Ué, é só voce olhar no codigo
ler os nomes das classes e dos metodos

que voce chega na linha 91, do erro

System.out.println(""+livro[i].getId());

drsmachado

luyz:
drsmachado:
Você postou o código e um monte de comentário desnecessário.
Só esqueceu de dizer EM QUAL LINHA ESTÁ O MALDITO ERRO.
Qual é a droga da linha 91, da classe Principal?

Ué, é só voce olhar no codigo
ler os nomes das classes e dos metodos

que voce chega na linha 91, do erro

System.out.println(""+livro[i].getId());

Sem comentários.
Se o camarada omitir qualquer linha que seja ou excluir linhas em branco ou algo neste sentido, a contagem de linhas da IDE e do tópico serão diferentes, não é, gênio?

pmlm

drsmachado:

Sem comentários.
Se o camarada omitir qualquer linha que seja ou excluir linhas em branco ou algo neste sentido, a contagem de linhas da IDE e do tópico serão diferentes, não é, gênio?

Isso fazia sentido se na linha 91 não houvesse um NPE. Ao olhar para a linha 91 é óbvio que livro[i] é null…

drsmachado

pmlm:
drsmachado:

Sem comentários.
Se o camarada omitir qualquer linha que seja ou excluir linhas em branco ou algo neste sentido, a contagem de linhas da IDE e do tópico serão diferentes, não é, gênio?

Isso fazia sentido se na linha 91 não houvesse um NPE. Ao olhar para a linha 91 é óbvio que livro[i] é null…


O objetivo é fazer o camarada que postou o tópico perceber isto.
Este é o motivo da pergunta.
Compreende?

T

Boa noite pessoal,

Então esse código ai não fui eu que postei só sou dono da conta, mas um colega de faculdade utilizou para postar uma dúvida dele, e sim ele fez papagaida e
depois que colou o código aqui apagou algumas coisas por isso deu diferença nas linha, mas podem considerar como resolvido, porque eu já ajudei meu parceiro
de classe. Abraço à todos e valeu pelo empenho na tentativa de ajudar.

Obs: Não! não emprestei minha senha para ele postar, eu já estava logado e ele estava fazendo pesquisa utilizando meu note!

Criado 22 de junho de 2011
Ultima resposta 22 de jun. de 2011
Respostas 9
Participantes 5