olá pessoal, estou com um “pequeno” probleminha aqui. não estou conseguindo implementar a interface comparable.
Já li vários tópicos a respeito e depois de muitos testes, eu resolvi perguntar.
Eu tenho que implementar comparable e ordenar de acordo com a pontuaçao, porem eu tenho que fazer isso em outra classe (?) e não entendi muito bem como fazer isso. abaixo os codes, se alguem puder ajudar.
PilotoEquipe
package BrunoFagundesExerc2;
public class PilotoEquipe implements PilotoEquipeInterface, Comparable<PilotoEquipe> {
private String nome, equipe;
private double pontos;
public PilotoEquipe(){}
public PilotoEquipe(String nome, String equipe, double pontos){
this.nome = nome;
this.equipe = equipe;
this.pontos = pontos;
}
@Override
public String getEquipe() {
return this.equipe;
}
@Override
public String getNome() {
return this.nome;
}
@Override
public double getPontos() {
return this.pontos;
}
@Override
public void setEquipe(String equipe) {
this.equipe = equipe;
}
@Override
public void setNome(String nome) {
this.nome = nome;
}
@Override
public void setPontos(double pontos) {
if(pontos < 0)
throw new ValorNegativoException("A pontuação precisa ser positiva.");
else
this.pontos = pontos;
}
}
class ValorNegativoException extends RuntimeException{
public ValorNegativoException(String message){
super(message);
}
}
ControleFederacao
package BrunoFagundesExerc2;
import java.util.Scanner;
public class ControleFederacao {
public static void main(String args[]){
Scanner read = new Scanner (System.in);
CorridaX1 corrida = new CorridaX1();
for(int i=0; i<2; i++){
PilotoEquipe p = new PilotoEquipe();
System.out.println("digite o nome do piloto:");
p.setNome(read.nextLine());
System.out.println("digite a equipe do piloto:");
p.setEquipe(read.nextLine());
System.out.println("digite a pontuação");
try{
p.setPontos(read.nextDouble());
}catch(ValorNegativoException e){
System.out.println("ERRO " +e);
}
read.nextLine();
corrida.adicionaPiloto(p);
}
corrida.Ordena();
corrida.Print();
}
}
e PilotoCorrida
package BrunoFagundesExerc2;
public class PilotoCorrida implements Comparable<PilotoEquipe> {
@Override
public int compareTo(PilotoEquipe p) {
if(this.pontos < p.pontos)
return -1;
if(this.pontos > p.pontos)
return 1;
else
return 0;
}
Corrida
package BrunoFagundesExerc2;
import java.util.Arrays;
public class CorridaX1 {
PilotoEquipeInterface pilotos[] = new PilotoEquipeInterface[20];
private int last = 0;
public void adicionaPiloto(PilotoEquipeInterface p){
pilotos[last] = p;
last++;
}
public void removePiloto(int x){
pilotos[x] = null;
for(int i = x; i<last-1; i++)
pilotos[i] = pilotos[i+1];
last--;
}
public void Print(){
for(int i=0; i<last; i++)
System.out.print("\nNome: " +pilotos[i].getNome()+ ". Equipe: " +pilotos[i].getEquipe()+ ". Pontos: " +pilotos[i].getPontos());
}
public void Ordena(){
Arrays.sort(pilotos);
}
}
Obg.