Autor Tema: ayuda con un codigo Java uso ArrayList e instanceof  (Leído 6026 veces)

ledesma90

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
ayuda con un codigo Java uso ArrayList e instanceof
« en: 22 de Mayo 2013, 14:34 »
buenas de vuelta a todos, estoy otra vez con otra duda para variar, hace poco he realizado un proyecto, yo creyendo que estaba todo correcto hoy lo pruebo y me doy cuenta que tenia errores, el tipo de error es que no realiza lo que quería unir pares


para quedar mas claro amigos.

Este código tiene que recorrer un arraylist y cargar en otro arraylist los pares
Código: [Seleccionar]
public void hayParesOfertaDemandaEmpleo()
    {
        p=0;
        l=0;
        i=0;
        j=0;
        for(i=0;i<(empleo.size()-1);i++)
        {
            if(empleo.get(i) instanceof OfertaEmpleo)
            {
            OfertaEmpleo tam=(OfertaEmpleo) empleo.get(i);
            p=1;
                    if(tam.perfil instanceof PerfilEspecialista)
                    {
                    PerfilEspecialista fac=(PerfilEspecialista) tam.perfil;
                    sa=fac.compara();
                    }else if(tam.perfil instanceof PerfilTitulado){
                    PerfilTitulado fac=(PerfilTitulado) tam.perfil;
                    sa=fac.compara();
                    }
            }else if(empleo.get(i) instanceof DemandaEmpleo)
            {
            DemandaEmpleo tam=(DemandaEmpleo) empleo.get(i);
            p=2;
                    if(tam.perfil instanceof PerfilEspecialista)
                    {
                    PerfilEspecialista fac=(PerfilEspecialista) tam.perfil;
                    sa=fac.compara();
                    }else if(tam.perfil instanceof PerfilTitulado){
                    PerfilTitulado fac=(PerfilTitulado) tam.perfil;
                    sa=fac.compara();
                    }
            }
                    for(j=1;j<empleo.size();j++)
                    {   
                        if(empleo.get(j) instanceof OfertaEmpleo)
                        {
                        OfertaEmpleo tom=(OfertaEmpleo) empleo.get(j);
                        l=1;
                                if(tom.perfil instanceof PerfilEspecialista)
                                {
                                PerfilEspecialista foc=(PerfilEspecialista) tom.perfil;
                                so=foc.compara();
                                }else if(tom.perfil instanceof PerfilTitulado){
                                PerfilTitulado foc=(PerfilTitulado) tom.perfil;
                                so=foc.compara();
                                }
                        }else if(empleo.get(j) instanceof DemandaEmpleo)
                        {
                        DemandaEmpleo tom=(DemandaEmpleo) empleo.get(j);
                        l=2;
                                if(tom.perfil instanceof PerfilEspecialista)
                                {
                                PerfilEspecialista foc=(PerfilEspecialista) tom.perfil;
                                so=foc.compara();
                                }else if(tom.perfil instanceof PerfilTitulado){
                                PerfilTitulado foc=(PerfilTitulado) tom.perfil;
                                so=foc.compara();
                                }
                        }
                       
                       
                        if(p!=l&& so.equals(sa))
                        {
                       
                            if(empleo.get(i) instanceof OfertaEmpleo)
                            {
                                OfertaEmpleo temp=(OfertaEmpleo)empleo.get(i);
                                paresEmpleo.add(temp);
                            }
                            if(empleo.get(i) instanceof DemandaEmpleo)
                            {
                                DemandaEmpleo temp=(DemandaEmpleo) empleo.get(i);
                                paresEmpleo.add(temp);
                            }
                            if(empleo.get(j) instanceof OfertaEmpleo)
                            {
                                OfertaEmpleo tomp=(OfertaEmpleo) empleo.get(j);
                                paresEmpleo.add(tomp);
                            }
                            if(empleo.get(j) instanceof DemandaEmpleo)
                            {
                                DemandaEmpleo tomp=(DemandaEmpleo) empleo.get(j);
                                paresEmpleo.add(tomp);
                            }
                       
                        }
                    l=0;
                    }
        p=0;
        }
           
    }
obviamente si no entienden muy bien lo que quiero les puedo pasar todo mi codigo y ya prueban mi programa que ya tiene interfaz
muchas gracias espero me ayuden
« Última modificación: 20 de Septiembre 2014, 18:06 por Alex Rodríguez »

ledesma90

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:ayuda con un codigo
« Respuesta #1 en: 22 de Mayo 2013, 14:43 »
aca luego ya dejo mi proyecto por si le sirva a alguien.
https://mega.co.nz/#!k9p3kKQY!EeWnlhqJ7Ywe0C4Lg9c5IlvZXO8VpNoYevS5mpZak6w

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:ayuda con un codigo Java
« Respuesta #2 en: 23 de Mayo 2013, 11:36 »
Yo creía que esto ya lo habías terminado  8)

No he mirado el último código tuyo, sino que he partido del último que había trabajado yo y le he añadido lo siguiente:

La clase ParOfertaDemanda: representa un par Oferta - Demanda

En la clase Colocacion el método public ArrayList<ParOfertaDemanda> encontrarPares ()

También he hecho algunas modificaciones en los métodos toString para que se viera más claro.

Algunas cosas adicionales en la clase test y en algún otro lugar.



A lo mejor no te sirve exactamente así, pero espero que te sirva de ayuda para el planteamiento de lo que tratas de resolver ;).

Código: [Seleccionar]
public class Perfil {
    private boolean carnetDeConducir;

    public Perfil(boolean carnetDeConducir)
    {
        this.carnetDeConducir=carnetDeConducir;
    }

    public String getconducir()
    {
        String s;
        if(carnetDeConducir==true)
        {
            s="con carnet de conducir";
        }
        else
        {
            s="sin carnet de conducir";
        }
        return s;
    }

    //borrar si no funciona
    public boolean getcarnet()
    {
        return carnetDeConducir;
    }//borrar si no funciona
    public String ToString()
    {
        String salida="";
        salida="\n"+getconducir();
        return salida;
    }

    // Código que añadimos

    public boolean equals (Object obj) {

        if (obj instanceof Perfil) {

            Perfil tmpPerfil = (Perfil) obj;

            if (this.carnetDeConducir==tmpPerfil.carnetDeConducir) {return true; } else { return false; }

        } else { return false; }
    } //Cierre del método equals

}

--------------------------------------------------------------------------------------------------


public class PerfilEspecialista extends Perfil{
    private String especialidad;
    public PerfilEspecialista(boolean carnetDeConducir,String especialidad)
    {
        super(carnetDeConducir);
        this.especialidad=especialidad;
    }

    public String getespecialidad()
    {
        return especialidad;
    }

    public String toString()
    {
        String salida="Especialista:";
        salida=""+getconducir()+
        "\nEl presente cuenta con la especialidad: "+especialidad +"\n";
        return salida;
    }

    // Código que añadimos

    public boolean equals (Object obj) {

        if (obj instanceof PerfilEspecialista) {

            PerfilEspecialista tmpPerfilEspecialista = (PerfilEspecialista) obj;

            if (super.equals(tmpPerfilEspecialista) && this.especialidad.equals(tmpPerfilEspecialista.especialidad) ) {

                return true; } else { return false; }

        }  else { return false; }
    } // Cierre del método equals

}

--------------------------------------------------------------------------------------------------


public class PerfilTitulado extends Perfil {
    private String titulo;
    private boolean conocimientoInformatica;
    public PerfilTitulado(boolean carnetDeConducir,String titulo,boolean conocimiento)
    {
        super(carnetDeConducir);
        this.titulo=titulo;
        conocimientoInformatica=conocimiento;
    }

    public String gettitulo()
    {
        return titulo;
    }

    public String getconocimiento()
    {
        String s;
        if(conocimientoInformatica==true)
        {
            s="El presente cuenta con conocimientos de informatica";
        }
        else
        {
            s="El presente no cuenta con conocimientos de informatica";
        }
        return s;
    }

    public String toString()
    {
        String salida="Titulado:";
        salida="\n"+super.getconducir()+
        "\ntitulo: "+titulo+
        "\n"+getconocimiento()+ "\n";
        return salida;
    }

    public boolean equals (Object obj) {

        if (obj instanceof PerfilTitulado) {

            PerfilTitulado tmpPerfilTitulado = (PerfilTitulado) obj;

            if (super.equals(tmpPerfilTitulado) && this.titulo.equals(tmpPerfilTitulado.titulo) &&
            this.conocimientoInformatica == tmpPerfilTitulado.conocimientoInformatica ) {

                return true; } else { return false; }

        }  else { return false; }
    } // Cierre del método equals

}

--------------------------------------------------------------------------------------------------

import java.util.*;
public class Empleo {
    protected Perfil perfil;

    //ArrayList<PerfilEspecialista> perfil = new ArrayList<PerfilEspecialista>();
    //ArrayList<PerfilTitulado> perfil1 = new ArrayList<PerfilTitulado>();
    public Empleo(Perfil perfil)
    {
        this.perfil=perfil;
    }

    /*public void agregarobjeto (boolean carnetDeConducir,String especialidad){
    perfil.add(new PerfilEspecialista(carnetDeConducir,especialidad));
    }
    public void agregarobjeto (boolean carnetDeConducir,String titulo,boolean conocimiento){
    perfil1.add(new PerfilTitulado(carnetDeConducir,titulo,conocimiento));
    }*/
    public String toString()
    {
        String salida="";
        return salida;
    }

    public Perfil getPerfil() { return perfil;}
}

--------------------------------------------------------------------------------------------------

public class OfertaEmpleo extends Empleo {
    private String nombreEmpresa;
    private String puesto;
    private double sueldo;
    public OfertaEmpleo(Perfil perfil,String nombreEmpresa, String puesto,double sueldo)
    {
        super(perfil);
        this.nombreEmpresa=nombreEmpresa;
        this.puesto=puesto;
        this.sueldo=sueldo;
    }

    public String toString()
    {
        String salida="_______________Oferta de empleo ______________";
        salida = salida+"\n"+perfil.toString()+
        "\nNombre de la empresa: "+nombreEmpresa+
        "\nPuesto a disposicion: "+puesto+
        "\nSueldo a cobrar: "+sueldo +"\n___________Fin Oferta Empleo\n";
        return salida;
    }
}

--------------------------------------------------------------------------------------------------

public class DemandaEmpleo extends Empleo {
    private String persona;
    public DemandaEmpleo(Perfil perfil,String persona)
    {
        super(perfil);
        this.persona=persona;
    }

    public String toString()
    {
        String salida="__________Demanda de empleo _________________";
        salida=salida + "\n"+perfil.toString()+
        "\nNombre del candidato: "+persona + "\n _______________Fin demanda empleo__________\n";
        return salida;
    }
}

--------------------------------------------------------------------------------------------------

import java.util.*;

public class Colocacion {
    ArrayList<Empleo> empleo;
    public Colocacion()       
    {
        empleo=new ArrayList<Empleo>();
    }

    public void agregarOfertaEmpleo (Perfil perfil,String nombreEmpresa, String puesto,double sueldo)
    {       
        empleo.add(new OfertaEmpleo(perfil,nombreEmpresa,puesto,sueldo));
    }

    public void agregarDemandaEmpleo (Perfil perfil,String persona)
    {
        empleo.add(new DemandaEmpleo(perfil,persona));
    }

    //Recibe un perfil y comprueba si existe al mismo tiempo una oferta y una demanda de empleo
    //con ese perfil
    public boolean hayTrabajo (Perfil perfil) {
        //Determinamos si existe una demanda de empleo dentro del arraylist para ese perfil
        boolean existeOferta = false;
        boolean existeDemanda = false;

        for (Empleo e: empleo) {
            if (e instanceof OfertaEmpleo && e.getPerfil().equals(perfil)){
                existeOferta = true;
            }
            if (e instanceof DemandaEmpleo && e.getPerfil().equals(perfil)){
                existeDemanda = true;
            }
        }

        if (existeOferta == true & existeDemanda == true) {
            return true;
        } else { return false;}

    }

    public ArrayList<ParOfertaDemanda> encontrarPares () {
        ArrayList <ParOfertaDemanda> paresEncontrados = new ArrayList <ParOfertaDemanda> ();   

        for (int i=0; i<empleo.size()-1; i++){
            for (int j=i+1; j< empleo.size(); j++) {

                //Comprobamos pares oferta-demanda
                if (empleo.get(i) instanceof OfertaEmpleo &&
                empleo.get(j) instanceof DemandaEmpleo &&
                empleo.get(i).getPerfil().equals(empleo.get(j).getPerfil())){
                    paresEncontrados.add(new ParOfertaDemanda(empleo.get(i), empleo.get(j)));

                }

                //Comprobamos pares demanda-oferta
                if (empleo.get(i) instanceof DemandaEmpleo &&
                empleo.get(j) instanceof OfertaEmpleo &&
                empleo.get(i).getPerfil().equals(empleo.get(j).getPerfil())){
                    paresEncontrados.add(new ParOfertaDemanda(empleo.get(j), empleo.get(i)));

                }

            }

        }

        return paresEncontrados;
    }

    public String toString()
    {
        String salida="";
        salida="\n"+empleo+"\n";
        return salida;
    }
}

-----------------------------------------------------------------------------------------------

public class ParOfertaDemanda {

    private Empleo oferta;
    private Empleo demanda;

    /**
     * Constructor for objects of class ParOfertaDemanda
     */
    public ParOfertaDemanda(Empleo of, Empleo dem)
    {
        oferta = of;
        demanda = dem;
    }

    public void setOfertaEmpleoEnPar(OfertaEmpleo of)     {
        oferta = of;
    }

    public void setDemandaEmpleoEnPar(DemandaEmpleo dem)     {
        demanda = dem;
    }

    public Empleo getOfertaDelPar () { return oferta; }

    public Empleo getDemandaDelPar () { return demanda; }

}

--------------------------------------------------------------------------------------------

import java.util.ArrayList;

public class test {
    public static void main (String [] args)
    {
        Colocacion emp = new Colocacion();

        PerfilEspecialista emp1= new PerfilEspecialista(true,"sumar");

        PerfilTitulado emp2= new PerfilTitulado(false,"analisis",true);

        PerfilEspecialista emp3= new PerfilEspecialista(true,"restar");

        PerfilEspecialista emp4= new PerfilEspecialista(true,"maquinista");

        PerfilEspecialista emp5= new PerfilEspecialista(true,"oficinista");

        emp.agregarOfertaEmpleo(emp1,"empritotal", "gerente",15000);
        emp.agregarOfertaEmpleo(emp2,"empritotal", "gerente",15000);

        emp.agregarOfertaEmpleo(emp4,"empresa1", "midato",15000);

        PerfilEspecialista demp1= new PerfilEspecialista(true,"sumar");
        PerfilTitulado demp2= new PerfilTitulado(false,"analisis",true);

        PerfilEspecialista demp9= new PerfilEspecialista(true,"maquinista");

        emp.agregarDemandaEmpleo(demp1,"jose");
        emp.agregarDemandaEmpleo(demp2,"jose");
        emp.agregarDemandaEmpleo(demp9,"Pedro maquinista");

        System.out.println(emp);

        System.out.println ("¿Existe dentro de la lista de oferta-demanda una oferta y una demanda para un perfil" +
            "de especialista en sumar? :" + emp.hayTrabajo(emp1));

        System.out.println ("¿Existe dentro de la lista de oferta-demanda una oferta y una demanda para un perfil" +
            "de especialista en restar? :" + emp.hayTrabajo(emp3));

        System.out.println ("¿Existe dentro de la lista de oferta-demanda una oferta y una demanda para un perfil" +
            "de especialista en maquinista? :" + emp.hayTrabajo(emp4));

        ArrayList <ParOfertaDemanda> paresEncontrados = emp.encontrarPares();

        for (ParOfertaDemanda p: paresEncontrados) {
            System.out.println ("PAR OFERTA: " + p.getOfertaDelPar().toString());

            System.out.println ("PAR DEMANDA: " + p.getDemandaDelPar().toString());

        }
    }

}

ledesma90

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:ayuda con un codigo Java
« Respuesta #3 en: 23 de Mayo 2013, 15:30 »
si Alex, se me cae la cara de vergüenza, yo pensé que lo había terminado, es que el método hay pares funciona (Sí funciona mi programa), el drama es que solo junta los pares con perfil titulado y sin títulos no los junta, y eso lo probé ayer horario en mi país
muchas gracias Alex por responder, y bueno a mirar el código tuyo, permiso

ledesma90

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:ayuda con un codigo Java
« Respuesta #4 en: 23 de Mayo 2013, 23:15 »
ahora si amigo alex ;D, ya esta terminado(estoy seguro), tuve 2 errores,1° en mi interfaz al recoger los datos de un jList comparando mal, 2° mi codigo haypares, gracias de vuelta alex :D

para que me creas y sepas que no miento acá dejo mi proyecto(claro si quieres revisar amigo) 8), y también para todos los que quieran analizar para practicar  ;D
https://mega.co.nz/#!99JCCLJL!HOlYYSnV9FR8m8gEGswpQ1zxfUlW4mkUQLZN0wefuro
saludos

larga vida a Alex ;)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".