public class ListaParticipantes {
/*
* Hay N (valor se decide mediante constructor) participantes
* en una competición y de cada uno tenemos 2 datos:
* - número de participante
* - puntuación obtenida
*/
private int[][] participantes;
public ListaParticipantes(int numParticipantes) {
participantes = new int[numParticipantes][2];
}
public void setDatosParticipante(int numPart, int puntos) {
/*
* Buscaremos el elemento que coincida con este número de participante
* y asignaremos los puntos.
* Si no encontramos coincidencia, es que es un registro nuevo y lo
* asignaremos al primer espacio que esté disponible (numero participante = 0)
* y setearemos los datos.
* Si no hay disponibles, es que la matriz está llena y se rechazarán estos datos.
*/
boolean hayCoincidencia = false;
for (int i = 0; i < participantes.length; i++)
if (participantes[i][0] == numPart) {//Participante encontrado
participantes[i][1] = puntos; //Actualizamos puntos
hayCoincidencia = true;
System.out.println("\nDatos actualizados\n");
break; //Finalizamos bucle
}
if (!hayCoincidencia) { //No se ha encontrado participante que coincida
//Se trata entonces de un nuevo registro
boolean registrado = false;
for (int i = 0; i < participantes.length; i++)
if (participantes[i][0] == 0) { //Registro disponible
participantes[i][0] = numPart; //Registramos nuevo participante...
participantes[i][1] = puntos; //... con sus puntos
registrado = true;
System.out.println("\nNuevo participante registrado\n");
break; //Fin de bucle
}
if (!registrado) //No se ha registrado, porque no hay sitio disponible en la matriz
System.out.println("\nLista participantes completa, no se admiten más registros\n");
}
}
public int getPuntosParticipante(int numPart) {
/*
* Mediante el número de participante
* buscamos y retornamos su puntuación
*/
for (int i = 0; i < participantes.length; i++)
if (participantes[i][0] == numPart) //Participante encontrado
return participantes[i][1]; //Retornamos sus puntos
/*
* Si el bucle ha terminado sin retorna nada,
* es que no existe ese participante en la lista
*/
return -1; //Retornamos un valor que haga saber que no se ha encontrado el dato buscado
}
public void listarParticipantes() {
/*
* Recorreremos la matriz para mostrar los elementos que contengan datos.
* Se dejará de mostrar cuando se encuentre el
* primer registro vacío (numero participante = 0)
*/
if (participantes[0][0] == 0)
System.out.println("\nNo hay participantes registrados\n");
else {
for (int i = 0; i < participantes.length; i++) {
if (participantes[i][0] == 0) { //Registro vacío
System.out.println("\nFin de listado\n");
break; //Bucle terminado
}
else
System.out.printf("Nro Participante: %d -- Puntos: %d\n",
participantes[i][0], participantes[i][1]);
}
}
}
}