public boolean menor(Object obj)
{
if(obj instanceof Trabalhador)
Trabalhador t = (Trabalhador) obj;
if(this.vencimento()<T.vencimento())
return true;
else return false;
}
A frase em itálico da-me erro. "Not a statement. ; expected."
Este método está na classe Trabalhador, sendo que esta implementa a interface Comparavel que contém apenas o cabeçalho do método.
Não estou mesmo a ver que erro é esse, no entanto de realçar que tens um T.vencimento() a seguir, o Java é case sensitive, julgo que querias colocar t.vencimento(), e mesmo assim vai dar erro...
Como declaras a variável DENTRO de um if, ela SÓ existe dentro desse if, fora dele não existe. Recomendava-te a criares a variável fora do if, lá dentro fazes o casting, e depois usas normalmente no segundo if.
Bem se esse T for o t defenido tens ai bastantes erros, tb dava jeito saber o k keres fazer ai. mas aqui vai a minha tentativa
public boolean menor(Object obj)
{
if(obj instanceof Trabalhador){
Trabalhador t = (Trabalhador) obj;
if(this.vencimento()<t.vencimento())
return true;
else
return false;
}
System.out.println("Erro! N conseguiu converter o objecto");
System.out.exit(1); //erro n conseguiu converter o objecto e sai
}
alias assim ate estarias a gastar passos desnecessarios, assim estaria melhor
public boolean menor(Object obj)
{
if(obj instanceof Trabalhador){
if(this.vencimento()< ((Trabalhador) obj).vencimento())
return true;
else
return false;
}
System.out.println("Erro! N conseguiu converter o objecto");
System.out.exit(1); //erro n conseguiu converter o objecto e sai
}
O t já está maiúsculo. Ficou assim pq eu tive a testar com minúsculas e não mudei tudo outra vez:p
O objectivo disto é simples. Compara os vencimentos dois objectos Trabalhador e se um for maior do que outro retorna True, caso contrário retorna False. É muito simples mesmo.
Então experimenta a minha sugestão.
public boolean menor(Object obj)
{
if(obj instanceof Trabalhador)
{
Trabalhador T = (Trabalhador) obj;
if(this.vencimento()<T.vencimento())
return true;
}
return false;
}
Resolvi assim. Pus tudo dentro do if e resolveu-se.
Obrigado a todos pela ajuda:)
Ao menos percebeste porque não funcionava fora do if?
public boolean menor(Object obj)
{
if(obj instanceof Trabalhador)
{
Trabalhador T = (Trabalhador) obj;
if(this.vencimento()<T.vencimento())
return true;
}
return false;
}
Resolvi assim. Pus tudo dentro do if e resolveu-se.
Obrigado a todos pela ajuda:)
Esse n é o melhor metodo, pois se chamares a funçao em k o objecto (parâmetro de entrada) n é do tipo Trabalhador, ele n vai dar erro, pois vai devolver false logo no if criando assim um bug.
Ou seja estas a assumir k se n for dakele tipo devolve falso em vez de erro
theforbidden1
06-11-2007, 20:02
Belo exercício á moda de PPROG no ISEP, não havia solução para isso no \\mafalda\dump1?
Eu acho que o vi lá "Javas" hoje...
public int menor(Object obj)
{
if(obj instanceof Trabalhador)
{
Trabalhador T = (Trabalhador) obj;
if(this.vencimento()<T.vencimento())
return 1; //true
else
return 0; //false
}
else
return -1; //não é possível comparar
}
Esse n é o melhor metodo, pois se chamares a funçao em k o objecto (parâmetro de entrada) n é do tipo Trabalhador, ele n vai dar erro, pois vai devolver false logo no if criando assim um bug.
Ou seja estas a assumir k se n for dakele tipo devolve falso em vez de erro
Para o que é serve. Sou eu que passo o objecto e tenho a certeza de que é trabalhador. Mas está bem visto, sim :)
theforbidden1
11-11-2007, 22:53
Para o que é serve. Sou eu que passo o objecto e tenho a certeza de que é trabalhador. Mas está bem visto, sim :)
Se fosse para teres a certeza que era do tipo trabalhador a assinatura do método não era assim:
public int menor(Object obj)