1
Aprender a programar desde cero / Re:ordenar objetos interface Comparable y método compareTo Java ejemplo CU00913C
« en: 20 de Enero 2017, 15:43 »
Ejericio LINDO y un poco complicado porque <Comparable> se puede usar por ALTURA pero luego por EDAD es una cosa chunguissima ! de toda forma SEÑORES y SEÑORAS os envio mi idea de solucion --> que no se para NADA buena .. pero FUNCIONA ! !
-----------------------------------------
------------------------------------------
-----------------------------------------
-----------------------------------------
Personas sin ordenar
1 Mario - Altura: 187 - Edad : - 22
2 Pepe - Altura: 173 - Edad : - 52
3 Manuel - Altura: 158 - Edad : - 27
4 David - Altura: 164 - Edad : - 25
5 Alberto - Altura: 184 - Edad : - 80
Personas orden por altura
1 Manuel - Altura: 158 - Edad : - 27
2 David - Altura: 164 - Edad : - 25
3 Pepe - Altura: 173 - Edad : - 52
4 Alberto - Altura: 184 - Edad : - 80
5 Mario - Altura: 187 - Edad : - 22
Personas orden por EDAD--ME COSTO MUCHO
Mario - Altura: 187 - Edad : - 22
David - Altura: 164 - Edad : - 25
Manuel - Altura: 158 - Edad : - 27
Pepe - Altura: 173 - Edad : - 52
Alberto - Altura: 184 - Edad : - 80
BUILD SUCCESSFUL (total time: 0 seconds)
Código: [Seleccionar]
public class Main extends Persona {
public static void main(String [] args){
//aquy lo hago con un array
// yo queria hacer sia x edad que por altura desde
// este array
Persona[] p1 = {new Persona("Mario",187,22),
new Persona("Pepe",173,52),
new Persona("Manuel",158,27),
new Persona("David",164,25),
new Persona("Alberto",184,80),
};
// este contador sirve para poner el numerito ..ahahahah
int contador = 0;
System.out.print("Personas sin ordenar"+"\n");
for (int i = 0; i < p1.length; i++) {
contador++;
System.out.print(contador+" ");
p1[i].visual();
}
//[b]LA Burbuja -- ]DARABUKA -- [/b]
Ordenar.ordenar(p1);
int contador2 = 0;
System.out.print("\n"+"Personas orden por altura"+"\n");
for (int i = 0; i < p1.length; i++) {
contador2++;
System.out.print(contador2+" ");
p1[i].visual();
}
System.out.print("\n"+"Personas orden por EDAD--ME COSTO MUCHO"+"\n");
int contador3 = 0;
for (int i = 0; i < p1.length; i++){
contador3++;
p1[i].ordenaPorEdad(p1);
System.out.println(p1[i]);
}
}
}
---------------------------------------------------------------------------------------------
PERSONA
----------------------------------------------------------------------------------------------
public class Persona implements Comparable<Persona> {
private String nombre;
private int edad, altura;
public Persona(String nuevoNombre,int nuevaAltura, int nuvaEdad){
this.nombre = nuevoNombre;
if ((nuvaEdad >= 0) && (nuvaEdad < Short.MAX_VALUE)) this.edad = nuvaEdad;
if ((nuevaAltura >= 0) && (nuevaAltura < Short.MAX_VALUE)) this.altura = nuevaAltura;
}
//public Persona(Persona[] p){
//}
public Persona(Persona p){
this(p.nombre,p.edad,p.altura);
}
public Persona(){}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
//esto es para coprovar si se puede cambiar edad
public void setEdad(int nuevaEdad) {
edad = nuevaEdad;
}
public int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
@Override
public int compareTo(Persona per){
if(this.getAltura() > per.getAltura()) { return 1; }
else if(this.getAltura() < per.getAltura()){ return -1; }
else return 0;
}
public void visual(){
System.out.println(toString());
//String s = nombre.toString() + " - " + "Altura: " + altura + " - " + "Edad :" + " - " + edad;
}
@Override
public String toString(){
String s = nombre + " - " + "Altura: " + altura + " - " + "Edad :" + " - " + edad;
return s;
}
public Persona[] ordenaPorEdad(Persona[] p1){
Persona[] aux = new Persona[5];
Persona p3 = new Persona();
int c = 0;
[b] for (int i = 0; i < p1.length; i++){
for(int j = i + 1; j < p1.length; j++){
c++;
if(p1[i].getEdad() > p1[j].getEdad()){
p3 = p1[i];
p1[i] = p1[j];
p1[j] = p3;[/b]
[b] for(int n = 0; n < aux.length; n++){
aux[n]=p3;[/b]
//c++;
//System.out.print("\n"+ c +" "+aux);
}
}
}
//c++; toda estas son la prueva que he echo !!!
//for(int n = 0; n < aux.length; n++){
// System.out.print("\n"+c+" "+aux);
}
//System.out.print("\n"+c+" "+p3); toda estas son la prueva que he echo !!!
[b] return aux; [/b]
}
//return aux; toda estas son la prueva que he echo !!!
}
--------------------------------------------------------------------------------------------------------------------
ORDENAR <Comparable> esta aquy ...mas o menos
-------------------------------------------------------------------------------------------------------------------
public class Ordenar {
/**
*
* @param p Persona
*/
public static void ordenar(Comparable[] p){
for(int i = 0; i < p.length; i++){
for (int j = 0; j < p.length; j++){
[b] if (p[i].compareTo(p[j])==-1){[/b]
[b] Comparable c = p[i];[/b]
p[i]=p[j];
p[j]=c;
}
}
}
}
}
-----------------------------------------
------------------------------------------
-----------------------------------------
-----------------------------------------
Personas sin ordenar
1 Mario - Altura: 187 - Edad : - 22
2 Pepe - Altura: 173 - Edad : - 52
3 Manuel - Altura: 158 - Edad : - 27
4 David - Altura: 164 - Edad : - 25
5 Alberto - Altura: 184 - Edad : - 80
Personas orden por altura
1 Manuel - Altura: 158 - Edad : - 27
2 David - Altura: 164 - Edad : - 25
3 Pepe - Altura: 173 - Edad : - 52
4 Alberto - Altura: 184 - Edad : - 80
5 Mario - Altura: 187 - Edad : - 22
Personas orden por EDAD--ME COSTO MUCHO
Mario - Altura: 187 - Edad : - 22
David - Altura: 164 - Edad : - 25
Manuel - Altura: 158 - Edad : - 27
Pepe - Altura: 173 - Edad : - 52
Alberto - Altura: 184 - Edad : - 80
BUILD SUCCESSFUL (total time: 0 seconds)