galera,
to criando uma classe Agenda1 que trabalha com uma coleção de objetos de outra classe Compromisso,
um dos métodos é o addCompromisso, e deve ter uma exceção caso o parametro seja igual a null,
até agora o método tá assim
public boolean addCompromisso(Compromisso compromisso) throws Exception{
if (compromisso.equals(null))
throw new Exception("VALOR INVÁLIDO.");
agenda.add(compromisso);
return true;
ja tentei de tudo, mas sempre quebra no teste do junit
na especificaçao do erro ele acusa isso
java.lang.Exception: Unexpected exception, expected<java.lang.IllegalArgumentException> but was<java.lang.NullPointerException>
alguem tem idéia do que seja?
Se compromisso é nulo, você não pode chamar o método equals dele. Simplesmente pq vc não pode chamar método nenhum do “nulo”.
public boolean addCompromisso(Compromisso compromisso) throws Exception{
if (compromisso == null) {
throw new IllegalArgumentException("VALOR INVÁLIDO.");
agenda.add(compromisso);
return true;
}
Só uma pergunta… quando esse método retorna false? Se a resposta é “nunca”, pq não faze-lo retornar void ou retornar this?
[quote=ViniGodoy]Se compromisso é nulo, você não pode chamar o método equals dele. Simplesmente pq vc não pode chamar método nenhum do “nulo”.
public boolean addCompromisso(Compromisso compromisso) throws Exception{
if (compromisso == null) {
throw new IllegalArgumentException("VALOR INVÁLIDO.");
agenda.add(compromisso);
return true;
}
Só uma pergunta… quando esse método retorna false? Se a resposta é “nunca”, pq não faze-lo retornar void ou retornar this?[/quote]
rodou aqui broder, valeu ae!
rapaz… eu to seguindo uma documentação,
lá tem dizendo pra ser boolean,
http://www.dsc.ufcg.edu.br/~raquel/lp2-2009.1/APIs/Agenda1.html#addCompromisso(Compromisso)
O que você quer dizer com “como eu faço para rodar”?
Sei lá eu, só sei como vc faz para usar esse método, desde que já tenha um compromisso criado:
agenda.addCompromisso(compromisso);
outra duvida rapida aqui
tem outro metodo listaCompromissos(estado) que vai varrer a 1a lista e pegar todos os objetos que tenham o parametro estado em comum e adicionar em uma 2a lista,
o problema é que os objetos na segunda lista tem que estar ordenados de acordo com a data,
ate agora o código tá assim,
public List<Compromisso> listaCompromissos(Estado estado) throws Exception{
if (estado==null)
throw new IllegalArgumentException("VALOR INVÁLIDO.");
List<Compromisso> lista = new ArrayList<Compromisso>();
for (Compromisso compromisso : agenda){
if (compromisso!=null){
if (compromisso.getEstado().equals(estado))
lista.add(compromisso);
}
}
return lista;
pra ficar melhor, eis o metodo construtor da classe Compromisso
public Compromisso(String descricao, String local, Calendar data,
Classificacao tipo, Prioridade prioridade) throws Exception{
if (descricao==null || local==null || data==null)
throw new IllegalArgumentException("VALOR INVÁLIDO.");
this.local = local;
this.descricao = descricao;
this.data = data;
this.tipo = tipo;
this.prioridade = prioridade;
estadoAtual = Estado.A_CONFIRMAR;
}
qualquer ajuda será bem vinda ![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
Primeiro de tudo. Segundo a documentação que você me passou, o método listaCompromisso não tem o throws Exception.
Depois, o método addCompromisso impede que compromissos nulos sejam adicionados à lista. Por isso, você não precisa verificar se aquela posição contém o valor null.
Só com isso, seu método já é simplificado para:
[code]
public List listaCompromissos(Estado estado) {
if (estado==null)
throw new IllegalArgumentException(“VALOR INVÁLIDO.”);
List lista = new ArrayList();
for (Compromisso compromisso : agenda){
if (compromisso.getEstado().equals(estado))
lista.add(compromisso);
}
return lista;
}[/code]
Me parece fazer bastante sentido que a classe Compromisso seja comparável por datas. Nesse caso, você teria que fazer
public class Compromisso implements Comparable<Compromisso>
{
public int compare(Compromisso outro) {
return this.data.compare(outro.data);
}
}
Então, para retornar aquela lista ordenada, basta colocar antes de “return lista”:
Collections.sort(lista);
Ah sim, se vc não entendeu essa história de comparable, dá uma lida nesse post:
http://www.guj.com.br/posts/list/45985.java#241201