I'm having difficulty using the comparable interface, I should do the increasing comparison of pilots according to their score (class PilotoEquipe
), and then in class CorridaX1
, I need to use Arrays.sort
to organize the array of pilots. When I run Arrays.sort
I get the following error:
Exception in thread "main" java.lang.NullPointerException at ComparableTimSort.java:316 at java.util.ComparableTimSort.sort (ComparableTimSort.java:184) at java.util.Arrays.sort (Arrays.java:1246) at LeonardoBruksch.CorridaX1.orderna (CorridaX1.java:41) at LeonardoBruksch.ControleFederacao.main (ControlFederacao.java:35) Java Result: 1
Pilot Class Team:
public class PilotoEquipe implements PilotoEquipeInterface, Comparable<PilotoEquipe>{
protected String nome;
protected String equipe;
protected double pontos;
public PilotoEquipe(String nome, String equipe, double pontos){
this.nome = nome;
this.equipe = equipe;
this.pontos = pontos;
}
@Override
public String getNome() {
return nome;
}
@Override
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String getEquipe() {
return equipe;
}
@Override
public void setEquipe(String equipe) {
this.equipe = equipe;
}
@Override
public double getPontos() {
return pontos;
}
@Override
public void setPontos(double pontos) {
this.pontos = pontos;
}
public int compareTo(PilotoEquipe piloto) {
if(this.getPontos() > piloto.getPontos())
return -1;
else if(this.getPontos() == piloto.getPontos())
return 0;
else
return 1;
}
}
Running Class X1:
public class CorridaX1 {
PilotoEquipeInterface[] p = new PilotoEquipeInterface[20];
public void exibePilotos(){
int i = 0;
while(p[i] != null && i<p.length){
int numero = i+1;
System.out.println("Piloto "+numero+":");
System.out.println("Nome: "+p[i].getNome());
System.out.println("Equipe: "+p[i].getEquipe());
System.out.println("----------------------------");
i++;
}
}
public void orderna(){
Arrays.sort(p);
}
}
Class ControlFederation (main)
public class ControleFederacao {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
CorridaX1 c = new CorridaX1();
System.out.println("Digite o nome: ");
String nome = scanner.nextLine();
System.out.println("Digite a equipe: ");
String equipe = scanner.nextLine();
System.out.println("Digite os pontos do piloto: ");
double pontos = scanner.nextDouble();
PilotoEquipe piloto = new PilotoEquipe(nome, equipe, pontos);
c.p[0] = piloto;
System.out.println("Antes da Ordenacao: ");
c.exibePilotos();
System.out.println("Apos a Ordenacao: ");
c.orderna();
c.exibePilotos();
}
}