public void addJaRequisitados(Obra item){obras_requisitadas.add(item);}
public ArrayList<Obra> getObras_ja_requisitadas(){return obras_requisitadas;}
public void addPosse_emprestimos(Obra item){posse_emprestimos.add(item);}
public ArrayList<Obra> getObras_em_sua_posse(){return posse_emprestimos;}
só que ao adicionar a obra ele tá dando erro…
“nullPointerException
null”
se puderem dar uma olhada e postar qualquer coisa agradecia…
ArrayList<Obra> obras_requisitadas = new ArrayList();
ArrayList<Obra> posse_emprestimo = new ArrayList();
obras_requisitadas=null;
posse_emprestimos=null;
Vc instancia um ArrayList para obras_requisitadas e posso_emprestimo mas depois seta eles como null… logo da nullPointer quando vc executa o método add deles… tira essas duas linhas:
normalmente (99%) das vezes que responde ao meu tópico você tem razão e me sugere uma solução que resolve o meu erro, mas desta vez não resolveu, deu na mesma o erro, o mesmo erro…
se puderem dar uma ajuda…
postem aí algo
Obrigado
**se quiser eu lhe envio o projecto todo para o seu mail…
public void addJaRequisitados(Obra item) {
obras_requisitadas.add(item);
}
A unica forma de dar erro é se o atributo ‘obras_requisitadas’ estiver nulo…
Você pode debugar esse trecho ai, ou se não souber debugar, coloca um Sysout antes de adicionar só para chegar isso:
public void addJaRequisitados(Obra item) {
System.out.println(obras_requisitadas);
obras_requisitadas.add(item);
}
Se aparecer null no console é porque em algum lugar na sua classe vc esta setando esse atributo como nulo.
De qualquer forma… se ainda tah dando erro nesse ponto e vc não conseguir achar, só postando mais código para achar.
faz o output de “null” na janela e depois dá erro…vou postar a class toda para ter uma visão melhor…
import java.util.*;
import java.io.*;
public abstract class Utentes implements Cloneable
{
String nome;
String codigo;
String telefone;
String morada;
String ano_nascimento;
ArrayList<Obra> obras_requisitadas;
ArrayList<Obra> posse_emprestimos;
public Utentes(){
nome = "";
codigo = "";
telefone = "";
morada = "";
ano_nascimento = "";
obras_requisitadas = new ArrayList<Obra>();
posse_emprestimos = new ArrayList<Obra>();
}
public Utentes(String nome,String codigo,String telefone,String morada,String ano_nascimento)
{
this.nome=nome;
this.codigo=codigo;
this.telefone=telefone;
this.morada=morada;
this.ano_nascimento=ano_nascimento;
ArrayList<Obra> obras_requisitadas = new ArrayList();
ArrayList<Obra> posse_emprestimo = new ArrayList();
}
public Utentes(Utentes y){
nome=y.getNome();
codigo=y.getCodigo();
telefone=y.getTelefone();
morada=y.getMorada();
ano_nascimento=y.getAno_de_nascimento();
obras_requisitadas = y.getObras_ja_requisitadas();
posse_emprestimos = y.getObras_em_sua_posse();
}
public String getNome(){return nome;}
public String getCodigo(){return codigo;}
public String getTelefone(){return telefone;}
public String getMorada(){return morada;}
public String getAno_de_nascimento(){return ano_nascimento;}
public void addJaRequisitados(Obra item){
System.out.println(obras_requisitadas);
obras_requisitadas.add(item);}
public ArrayList<Obra> getObras_ja_requisitadas(){return obras_requisitadas;}
public void addPosse_emprestimos(Obra item){
System.out.println(posse_emprestimos);
posse_emprestimos.add(item);}
public ArrayList<Obra> getObras_em_sua_posse(){return posse_emprestimos;}
public void Entrega_obra(Obra item){posse_emprestimos.remove(item);}
public String toString()
{
StringBuilder s = new StringBuilder();
s.append("-------------------------------\n");
s.append("Nome: "+nome+"\n");
s.append("Codigo: "+codigo+"\n");
s.append("Morada: "+morada+"\n");
s.append("Telefone: "+telefone+"\n");
s.append("Ano de nascimento: "+ano_nascimento+"\n");
s.append("Obras requisitadas: "+obras_requisitadas+"\n");
s.append("Obras em sua posse: "+posse_emprestimos+"\n");
return s.toString();
}
public abstract Utentes clone();
}
metodo que requisita
public void RequisitarLivro(String codigo_aluno,String codigo_obra){
boolean requisitar = true;
Utentes x;
Obra y;
if(existeUtente(codigo_aluno))
if(existeObra(codigo_obra)){
y = (Obra) material.get(codigo_obra);
if(y.getRequisitado()!=true){
Data d = new Data();
x = (Utentes) utente.get(codigo_aluno);
y.setRequisitado(requisitar);
x.addPosse_emprestimos(y);
x.addJaRequisitados(y);
y.setData_requisicao(d.getDia(), d.getMes(), d.getAno());
}}
else
System.out.println("A obra está requisitada ou códigos est~ºao errados");
}
o erro ocorre na class Utentes no metodo “addPosse_emprestimos(y)” e o erro é “nullpointerException null”
vejam se descobrem alguma coisa por aí…se precisarem mais alguma coisa…
Esse utente que deve vir do método get deve estar com obras_requisitadas e posse_emprestimos = null… vendo os construtores dessa classe, deve estar executando esse:
public Utentes(Utentes y){
nome=y.getNome();
codigo=y.getCodigo();
telefone=y.getTelefone();
morada=y.getMorada();
ano_nascimento=y.getAno_de_nascimento();
obras_requisitadas = y.getObras_ja_requisitadas();
posse_emprestimos = y.getObras_em_sua_posse();
if(obras_requisitadas == null)
obras_requisitadas = new ArrayList<Obra>();
if(posse_emprestimos == null)
posse_emprestimos = new ArrayList<Obra>();
}
Ou
alterar os métodos get dessas listas:
public ArrayList<Obra> getObras_ja_requisitadas(){
if(obras_requisitadas == null)
obras_requisitadas = new ArrayList<Obra>();
return obras_requisitadas;
}
public ArrayList<Obra> getObras_em_sua_posse(){
if(posse_emprestimos == null)
posse_emprestimos = new ArrayList<Obra>();
return posse_emprestimos;
}
Ah, agora que eu vi que vc obriga os filhos de Utentes a implementar clone… será que vc esta implementando clone corretamente?! clonando inclusive essas listas?!
E sendo Utentes uma classe abstrata, todas suas implementações são classes “filhas”, e como seus atributos não são private, sera que nenhuma dessas classes filhas (no construtor provavelmente) está setando esses arraylist como null?!
No geral… achei bem estranho a arquitetura das suas classes, é que esta meio confuso… mas isso vc vai vendo com o tempo e refatorando…
Porque vc usa um objeto Date?! ao inves de setar dia, mes e ano?!
Depois para calcular a quantidade de dias entre as duas datas, le qualquer um desses links: