Buenas ayer hice un examen de programación y mañana tengo el trimestral y no veo al profesor para que me pueda explicar. Tengo una clase partida jugadores con una serie de atributos y un array y el método ordenar jugador, mejor jugador, peor jugador y media de puntuacion dan null pointe exception y no entiendo porque. OS pongo el código y muchas gracias
public class PartidaJugadores {
private DatosJugador[] jugadores;
private static int MAXELEMENTOS = 20;
private int numElementos;
public PartidaJugadores(DatosJugador[] jugadores, int numElementos) {
this.jugadores = jugadores;
this.numElementos = numElementos;
}
public PartidaJugadores() {
this.jugadores = new DatosJugador[MAXELEMENTOS];
this.numElementos = 0;
}
public DatosJugador[] getJugadores() {
return jugadores;
}
public void setJugadores(DatosJugador[] jugadores) {
this.jugadores = jugadores;
}
public static int getMAXELEMENTOS() {
return MAXELEMENTOS;
}
public static void setMAXELEMENTOS(int MAXELEMENTOS) {
PartidaJugadores.MAXELEMENTOS = MAXELEMENTOS;
}
public int getNumElementos() {
return numElementos;
}
public void setNumElementos(int numElementos) {
this.numElementos = numElementos;
}
@Override
public String toString() {
String aux = "PartidaJugadores{" + "jugadores=" + jugadores + ", numElementos=" + numElementos + '}';
for (int i = 0; i < this.getNumElementos(); i++) {
aux += jugadores[i].toString();
}
return aux;
}
public void ordenarJugadores() {
for (int x = 0; x < jugadores.length; x++) {
for (int i = 0; i < jugadores.length - x - 1; i++) {
DatosJugador aux = null;
if (jugadores[i].getPuntuacion() < jugadores[i + 1].getPuntuacion()) {
aux = jugadores[i + 1];
}
jugadores[i + 1] = jugadores[i];
jugadores[i] = aux;
}
}
}
public void desorDenarJugadores() {
Random r = new Random();
int numCambios = 10 + r.nextInt(50);
for (int i = 0; i < numCambios; i++) {
int primera = r.nextInt(numElementos);
int segunda = r.nextInt(numElementos);
DatosJugador c = this.jugadores[primera];
this.jugadores[primera] = this.jugadores[segunda];
this.jugadores[segunda] = c;
}
}
public void jugarPartida() {
}
public int mejorJugador() {
int mayor = Integer.MIN_VALUE;
int pos = -1;
for (int i = 0; i < this.getNumElementos(); i++) {
if (jugadores[i].getPuntuacion() > mayor) {
mayor = jugadores[i].getPuntuacion();
}
pos = i;
}
return pos;
}
public int peorJugador() {
int menor = Integer.MAX_VALUE;
int pos = -1;
for (int i = 0; i < this.getNumElementos(); i++) {
if (jugadores[i].getPuntuacion() > menor) {
menor = jugadores[i].getPuntuacion();
}
pos = i;
}
return pos;
}
public double mediaAciertos() {
double acumulado = 0;
double resultado = 0;
for (int i = 0; i < this.getNumElementos(); i++) {
acumulado += jugadores[i].getPuntuacion();
}
resultado = acumulado / this.getNumElementos();
return resultado;
}
public boolean addJugador(DatosJugador jugador1) {
boolean resultado = false;
if (this.getNumElementos() < jugadores.length) {
jugadores[this.getNumElementos() + 1] = jugador1;
this.numElementos++;
resultado = true;
} else {
resultado = false;
}
return resultado;
}
}