Como puedo hacer para guardar varias personas con su nombre y la edad de un y que se compare por edad?…
tengo el siguiente código pero no me compila después de imprimir los datos….si alguien tiene algun ejemplo o un consejo muchas gracias
//clase Main
package mmme_arboledad;
public class Main { private Arbol mArbol; private Interfaz mInterfaz; private Nodo mNodo;
public Main(){ mArbol=new Arbol(); mInterfaz=new Interfaz(); } public void correr(){ Empleado mEmpleado; int opc; String cad; String cad1; String cad2; int nuevo, ante; do { mInterfaz.imprimir(); opc = mInterfaz.getOpc(); switch(opc){ case 1: mInterfaz.PedirNombre(); mInterfaz.PedirEdad(); mEmpleado=new Empleado(); mEmpleado.setNombre(mInterfaz.getNombre()); mEmpleado.setEdad(mInterfaz.getEdad()); mArbol.agregar(mEmpleado); break; case 2: mEmpleado=(Empleado) mArbol.recoInORden(); mInterfaz.ImprimirEmpleado(mEmpleado); break; case 3: cad1=mArbol.preORden(); //mInterfaz.imprimiricadena("PreOrden \n"+cad1); break; case 4: cad2=mArbol.posORden(); //mInterfaz.imprimiricadena("PosOrden \n"+cad2); break; case 5: break; case 6: break; case 7: } } while (opc != 8);//si es diferente de 4 saldra un error de numero } public static void main(String[] args) { Main mMain=new Main(); mMain.correr(); }
}
//Clase Arbol package mmme_arboledad;
/** * * @author */ public class Arbol { private Nodo Raiz; private String cad;
public Arbol(){ Raiz=null; } public void agregar(Empleado mEmpleado){ Nodo nodoTemp=null; Nodo nodoRama=null; Nodo mNodo=new Nodo(); mNodo.setDato(mEmpleado); if (Raiz==null){ Raiz=mNodo; }else{ nodoTemp=Raiz; nodoRama=Raiz; while(nodoTemp!=null){ nodoRama=nodoTemp; if (mNodo.getDato().getEdad()>nodoTemp.getDato().getEdad()){ nodoTemp=nodoTemp.getDerecha(); }else{ nodoTemp=nodoTemp.getIzquierda(); } } if (mNodo.getDato().getEdad()>nodoRama.getDato().getEdad()){ nodoRama.setDerecha(mNodo); }else{ nodoRama.setIzquierda(mNodo); } } } public Object recoInORden(){ cad=""; InOrden(Raiz); return cad; } public void InOrden(Nodo r){ if (r!=null){ InOrden(r.getIzquierda()); cad=cad+r.getDato().getNombre()+r.getDato().getEdad()+"\n"; InOrden(r.getDerecha()); } } public String preORden(){ cad=""; preOrden(Raiz); return cad; } public void preOrden(Nodo r){ if (r!=null){ cad=cad+r.getDato()+"\n"; preOrden(r.getIzquierda()); preOrden(r.getDerecha()); } } public String posORden(){ cad=""; posOrden(Raiz); return cad; } public void posOrden(Nodo r){ if (r!=null){ posOrden(r.getIzquierda()); posOrden(r.getDerecha()); cad=cad+r.getDato()+"\n"; } } public Nodo buscar(int Edad){ Nodo mNodo; mNodo=Raiz; while((mNodo!=null)&&(mNodo.getDato().getEdad()!=Edad)){ if (Edad>mNodo.getDato().getEdad()){ mNodo=mNodo.getDerecha(); }else{ mNodo=mNodo.getIzquierda(); } } return mNodo; } public void Modificar(int ante, Empleado mEmpleado){ Nodo nodoAnte; Nodo nodoNuevo; nodoAnte=buscar(ante); if (nodoAnte!=null){ eliminar(nodoAnte); agregar(mEmpleado); } } //nos regrresa el nodo antyerior al numero ingresado private Nodo buscarRama(Nodo mNodo){ Nodo nodoTemp; nodoTemp=Raiz; while((nodoTemp!=null)&&(nodoTemp.getIzquierda()!=mNodo)&&(nodoTemp.getDerecha()!=mNodo)){ if (mNodo.getDato().getEdad()>nodoTemp.getDato().getEdad()){ nodoTemp=nodoTemp.getDerecha(); }else{ nodoTemp=nodoTemp.getDerecha(); } } return nodoTemp; } private Nodo buscarMayorDeMenores(Nodo mNodo){ Nodo nodoTemp; nodoTemp=mNodo.getIzquierda(); while(nodoTemp.getDerecha()!=null){ nodoTemp=nodoTemp.getDerecha(); } return nodoTemp; } public void eliminar(Nodo mNodo){ Nodo nodoRama; Nodo nodoMayMen; nodoRama=buscarRama(mNodo); //si es una hoja if ((mNodo.getIzquierda()==null)&&(mNodo.getDerecha()==null)){ if (mNodo==Raiz){ Raiz=null; }else{ if (nodoRama.getIzquierda()== mNodo){ nodoRama.setIzquierda(null); }else{ nodoRama.setDerecha(null); } } //si es una rama con hoja a la izquierda }else if((mNodo.getIzquierda()!=null)&&(mNodo.getDerecha()==null)){ if(mNodo==Raiz){ Raiz=mNodo.getIzquierda(); }else{ if (nodoRama.getIzquierda()==mNodo){ nodoRama.setIzquierda(mNodo.getIzquierda()); }else{ nodoRama.setDerecha(mNodo.getIzquierda()); } } //si es una rama con hoja a la deerecha }else if((mNodo.getDerecha()!=null)&&(mNodo.getIzquierda()==null)){ if (mNodo==Raiz){ Raiz=mNodo.getDerecha(); }else{ if (nodoRama.getDerecha()==mNodo){ nodoRama.setDerecha(mNodo.getDerecha()); }else{ nodoRama.setIzquierda(mNodo.getDerecha()); } } //si es un arama de dos hojas }else{ nodoMayMen=buscarMayorDeMenores(mNodo); mNodo.setDato(nodoMayMen.getDato()); eliminar(nodoMayMen); } }
}
//clase Nodo
package mmme_arboledad;
/** * * @author */ public class Nodo { private Empleado mEmpleado; private Nodo Izquierda; private Nodo Derecha;
public Nodo() { mEmpleado = null; Izquierda = null; Derecha = null; } public Empleado getDato() { return mEmpleado; } public void setDato(Empleado mEmpleado) { this.mEmpleado = mEmpleado; } public Nodo getIzquierda() { return Izquierda; } public void setIzquierda(Nodo Izquierda) { this.Izquierda = Izquierda; } public Nodo getDerecha() { return Derecha; } public void setDerecha(Nodo Derecha) { this.Derecha = Derecha; }
}
//clase interfaz
package mmme_arboledad;
import javax.swing.ImageIcon; import javax.swing.JOptionPane;
/** * * @author */ public class Interfaz { private int Edad; private String Nombre; private int opc;
public Interfaz(){ Edad=0; Nombre=""; } public int getEdad() { return Edad; } public String getNombre() { return Nombre; } public int getOpc() { return opc; } public void imprimir(){ boolean correcto = true; do{ try{ opc = Integer.parseInt(JOptionPane.showInputDialog( "███████████ \n" +"██ Arbol ██ \n" +"███████████\n█" +" 1.- Agregar █\n█" +" 2.- Imprimir Inorden █\n█" +" 3.- Imprimir Preorden █\n█" +" 4.- Imprimir Posorden █\n█" +" 5.- Buscar █\n█" +" 6.- Eliminar █\n█" +" 7.- Modificar █\n█" +" 8.- Salir █" )); correcto = true; }//Excepcion en caso de introducir algo erroneo catch (Exception e){ JOptionPane.showMessageDialog(null, "Solo numero del 1 al 8","Error!!!", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("src//folder//Advertencia.jpg")); correcto = false; } } while (correcto != true); } public void PedirNombre(){ Nombre=JOptionPane.showInputDialog(null,"Dame El Nombre: "); } public void PedirEdad(){ Edad = Integer.parseInt(JOptionPane.showInputDialog(null,"Dame la edad: ")); } public void ImprimirEmpleado(Empleado mEmpleado){ JOptionPane.showInputDialog(null,"Los datos son: "+ mEmpleado.getNombre()+"\n"+mEmpleado.getEdad()); }
}
//clase Empleado
package mmme_arboledad;
/** * * @author */ public class Empleado { private int Edad; private String Nombre;
public Empleado(){ Edad=0; Nombre=””; }
public int getEdad() { return Edad; } public void setEdad(int Edad) { this.Edad = Edad; } public String getNombre() { return Nombre; } public void setNombre(String Nombre) { this.Nombre = Nombre; }
}