1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Java crear ranking Comparator ordenar por calificaciones intefaz gráfica swing
« en: 26 de Mayo 2021, 09:37 »
Saludos! Por favor, necesito ayuda a completar este ejercicio, no logro solucionarlo y no quiero quedarme con la duda. Se lo agradecería si alguien me ayuda y comparto de mi parte.
Mi problema es hacer un método que genere el ranking de la calificación aleatoria que se asigna a los participantes de la competencia.
Hice hasta cierta parte que es poder asignar una calificación aleatoria a cada participante, solo que no logre ordenar esas calificaciones y que se muestre como el ranking, es decir, de mayor a menor las calificaciones aleatorias
-
Empecé con la clase principal Perro
En esta clase uso arraylist y aqui se encuentran todas las operaciones
En esta clase intente hacer ordenamiento del arraylist
por ultimo la clase principal, que solamente tiene de metodo un menu
Mi problema es hacer un método que genere el ranking de la calificación aleatoria que se asigna a los participantes de la competencia.
Hice hasta cierta parte que es poder asignar una calificación aleatoria a cada participante, solo que no logre ordenar esas calificaciones y que se muestre como el ranking, es decir, de mayor a menor las calificaciones aleatorias
-
Empecé con la clase principal Perro
Código: [Seleccionar]
public class Perro {
private String nombPerro;
private String nombDueño;
private String raza;
private String tamaño;
private String placa;
private String edad;
private String peso;
private int nota;
public String getNombPerro() {
return nombPerro;
}
public void setNombPerro(String nombPerro) {
this.nombPerro = nombPerro;
}
public String getNombDueño() {
return nombDueño;
}
public void setNombDueño(String nombDueño) {
this.nombDueño = nombDueño;
}
public String getRaza() {
return raza;
}
public void setRaza(String raza) {
this.raza = raza;
}
public String getTamaño() {
return tamaño;
}
public void setTamaño(String tamaño) {
this.tamaño = tamaño;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public String getEdad() {
return edad;
}
public void setEdad(String edad) {
this.edad = edad;
}
public String getPeso() {
return peso;
}
public void setPeso(String peso) {
this.peso = peso;
}
public int getNota() {
return nota;
}
public void setNota(int nota) {
this.nota = nota;
}
}
En esta clase uso arraylist y aqui se encuentran todas las operaciones
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JOptionPane;
import java.util.Random;
public class Competencia {
ArrayList<Perro> registro = new ArrayList();
//METODO ENTRADA ES PARA USAR VENTANAS (JOPTIONPANE) PARA USARSE EN EL METODO AGREGAR DATOS
public String entrada(String dato){
return JOptionPane.showInputDialog(dato);
}
public void agregarDatos(){
String nombDueño = entrada("Nombre del Dueño");
String nombPerro = entrada("Nombre del Perro");
String raza = entrada("Raza del Perro");
String tamaño = entrada("Tamaño del Perro");
String placa = entrada("Placa del Perro");
String edad = entrada("Edad de Perro");
String peso = entrada("Peso de Perro");
Perro p = new Perro();
p.setNombDueño(nombDueño);
p.setNombPerro(nombPerro);
p.setRaza(raza);
p.setTamaño(tamaño);
p.setPlaca(placa);
p.setEdad(edad);
p.setPeso(peso);
registro.add(p);
//AGREGACION DE DATOS RANDOM PARA MOSTRAR EN UN METODO LA CALIFICACION
Random r = new Random();
int nota = r.nextInt(10)+1;
p.setNota(nota);
}
public void listaDatos(){
//METODO PARA MOSTRAR EN FORMA DE LISTA LOS DATOS QUE SE AGREGARON
String dato = "";
for (int i = 0; i < registro.size(); i++) {
dato += " Participante Nro." + (i+1) +"\n";
dato += "Nombre del dueño: " + registro.get(i).getNombDueño() +"\n";
dato += "Nombre del perro: " + registro.get(i).getNombPerro() +"\n";
dato += "Raza: " + registro.get(i).getRaza() +"\n";
dato += "Tamaño: " + registro.get(i).getTamaño() +"\n";
dato += "Placa: " + registro.get(i).getPlaca() +"\n";
dato += "Edad: " + registro.get(i).getEdad() +"\n";
dato += "Peso: " + registro.get(i).getPeso() +"\n";
}
JOptionPane.showMessageDialog(null, dato);
}
public boolean buscarPlaca(String placa){
boolean bandera = false;
int i = 0;
//PARA ORDENAR LOS OBJETOS DEL ARRAYLIST
while (bandera == false && i < registro.size()) {
if (registro.get(i).getPlaca().compareToIgnoreCase(placa)==0) {
bandera = true;
} else{
i++;
}
}
//INDICAMOS AL PRINCIPIO QUE BANDERA ES FALSE ENTONCES DE RETORNO SE IMPRIMEN EN FORMA DE LISTA LOS OBJETOS DENTRO DEL ARRAYLIST
if (bandera) {
JOptionPane.showMessageDialog(null," Participante Nro." +(i+1) +"\n"
+"Nombre del dueño: " +registro.get(i).getNombDueño() +"\n"
+"Nombre del perro: " +registro.get(i).getNombPerro() +"\n"
+"Raza: " +registro.get(i).getRaza() +"\n"
+"Tamaño: " +registro.get(i).getTamaño() +"\n"
+"Placa: " +registro.get(i).getPlaca() +"\n"
+"Edad: " +registro.get(i).getEdad() +"\n"
+"Peso: " +registro.get(i).getPeso() +"\n");
return false;
} else{
//SI EL DATO QUE INGRESO NO COICIDE CON EL OBJETO ENTONCES SE VA IMPRIMIR EL MENSAJE DE QUE NO EXISTE
JOptionPane.showMessageDialog(null, "La placa no esta registrada");
return true;
}
}
public void mostrarCalificacion(){
String dato = "";
for (int i = 0; i < registro.size(); i++) {
dato += " Participante Nro." + (i+1) +"\n";
dato += "Calificacion: " + registro.get(i).getNota() +"\n";
}
JOptionPane.showMessageDialog(null, dato);
}
public void ranking(){
Collections.sort(registro, new OrdenandoCalificacion());
String dato = "";
for (int i = registro.size(); i < 3; i++) {
dato += " RANKING DE PREMIADOS"+ "\n";
dato += "Participante Nro."+registro.get(i).getPlaca() +"\n";
dato += "Calificacion: "+registro.get(i).getNota();
}
JOptionPane.showMessageDialog(null, dato);
}
public void eliminarLista(){
registro.clear();
}
}
En esta clase intente hacer ordenamiento del arraylist
Código: [Seleccionar]
import java.util.Comparator;
public class OrdenandoCalificacion implements Comparator<Perro> {
@Override
public int compare(Perro o1, Perro o2) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
if (o1.getNota()>o2.getNota()) {
return -1;
} else if (o1.getNota()>o2.getNota()) {
return 0;
} else{
return 1;
}
}
}
por ultimo la clase principal, que solamente tiene de metodo un menu
Código: [Seleccionar]
import javax.swing.JOptionPane;
public class Principal {
public static void main(String[] args) {
Principal p = new Principal();
p.menu();
}
public void menu(){
Competencia c = new Competencia();
int opcion;
do {
opcion = Integer.parseInt(JOptionPane.showInputDialog(null," COMPETENCIA CANINA"
+"\n 1. Registro de participantes"
+"\n 2. Información de participantes"
+"\n 3. Calificaciones"
+"\n 4. Ranking de premiados"
+"\n 5. Consultar info de un participante"
+"\n 6. Eliminar lista de registro"
+"\n 7. SALIR"
+"","MENU PRINCIPAL",JOptionPane.QUESTION_MESSAGE));
switch(opcion){
case 1:
c.agregarDatos();
break;
case 2:
c.listaDatos();
break;
case 3:
//c.calificacion();
c.mostrarCalificacion();
break;
case 4:
c.ranking();
break;
case 5:
boolean valor = false;
do {
String placa = JOptionPane.showInputDialog(" CONSULTAR INFO DE UN PARTICIPANTE"
+ "\nIngrese la placa del perro");
valor = c.buscarPlaca(placa);
} while (valor);
break;
case 6:
c.eliminarLista();
break;
case 7:
JOptionPane.showMessageDialog(null, " FINALIZO EL PROGRAMA");
//System.out.println("");
System.exit(0);
break;
default:
System.out.println();
JOptionPane.showInputDialog(null," ELIJA UNA OPCION VALIDA"
+ "\n 1. Volver","ERROR",JOptionPane.WARNING_MESSAGE);
}
} while (opcion!=7);
}
}