ORDENACION DE NOTAS POR FECHAS EN JAVA.

Iniciado por el_otro_yo, 15 Mayo 2012, 19:06 PM

0 Miembros y 1 Visitante están viendo este tema.

el_otro_yo

Buenas que tal, aqui llevo ya unas cuantas semanas y no logro crear una lista de notas con fechas las cuales me aparezcan por pantalla ordenadas de la mas antigua a la mas reciente. e aqui mi codigo.

import java.util.Comparator;
import java.lang.Comparable;
import java.util.List;

public class NOTA
{
    //declaracion de variables.
    protected String Titulo;
    private String Contenido;
    private int diacreacion;
    private int mescreacion;
    private int anocreacion;
    private int fecha;
    private String NOTA;

    protected String TIPO;
    /**
     * Constructor de objetos de la clase NOTA.
     */
    public NOTA(String TIPO, String Titulo, String Contenido, int diacreacionnuevo, int mescreacionnuevo, int anocreacionnuevo)
    {
        this.Titulo=Titulo;
        this.Contenido=Contenido;
        this.diacreacion=diacreacion;
        this.mescreacion=mescreacion;
        this.anocreacion=anocreacion;
        this.TIPO=TIPO;
        this.fecha=fecha;
        this.NOTA=NOTA;
   
    }
   
    /**
     * Ver el Titulo.
     */
    public String getTitulo()
    {
        return Titulo;
    }
    /**
     * Nuevo Titulo.
     */
    public void setTitulo(String nuevoTitulo)
    {
        Titulo=nuevoTitulo;
    }
    /**
     * Ver el Contenido.
     */
    public String getContenido()
    {
        return Contenido;
    }
    /**
     * Nuevo Contenido.
     */
    public void setContenido(String nuevoContenido)
    {
        Contenido=nuevoContenido;
    }
    /**
     * Ver el año.
     */
    public int getanocreacion()
    {
        return anocreacion;
    }
    /**
     * Nuevo año.
     */
    public void setanocreacion(int anocreacionnuevo)
    {
        anocreacion=anocreacionnuevo;
    }
    /**
     * Ver el mes.
     */
    public int getmescreacion()
    {
        return mescreacion;
    }
    /**
     * Nuevo mes.
     */
    public void setmescreacion(int mescreacionnuevo)
    {
        mescreacion=mescreacionnuevo;
    }
    /**
     * Ver el dia.
     */
    public int getdiacreacion()
    {
        return diacreacion;
    }
    /**
     * Nuevo dia.
     */
    public void setdiacreacion(int diacreacionnuevo)
    {
        diacreacion=diacreacionnuevo;
    }
    /**
     * Ver el TIPO de NOTA.
     */
    public String getTIPO()
    {
        return TIPO;
    }
    /**
     * Nuevo TIPO de NOTA.
     */
    public void setTIPO(String nuevoTIPO)
    {
        TIPO=nuevoTIPO;
    }



public void ordenacion(){
     NOTA misNotas= Arrays.asList(new NOTA("NOTA",2),
     new Titulo("LIBRO1",1),
     new Titulo("PELICULA1",5));
     Collections.sort(misNotas,new Comparator(){
                    public int compare(Object a, Object b) {
                        int diacreacion = ((Titulo)a).getCodigo();
                        int mescreacion=((Titulo)b).getCodigo();
                        int respuesta=0;
                        if(codigoPrimero<codigoSegundo){
                            respuesta=-1;
                        }
                        if(codigoPrimero>codigoSegundo){
                            respuesta=+1;
                        }
                       
                        return respuesta;
                    }
                });
       System.out.print(misNotas);         
   }
   
}



Tengo que implementarlo en el main....... pero la verdad es que llevo poco en esto y no se porque codigo empezar


Espero que alguien me ayude, gracias. :-(



Proteus1989

Resumiendo no tienes ni pajolera idea de lo que pone y el código que has puesto o te lo ha pasado un profesor o un compañero de clase.
Corrígeme si me equivoco xD. No te preocupes, todo no se aprende de la noche a la mañana.

Dinos todo lo que no entiendas del código y si no se me adelanta nadie te lo explico encantado, pero no dejes caer el ejercicio a ver si viene alguien y te lo hace.

el_otro_yo

Hola, oye no es que no tenga ni pajolera idea sabes...  pero no voy a poner todas las clases que tengo realizadas con sus atributos y metodos y tal porque solo quiero saber lo de las listas, y es verdad que me estoy iniciando, nadie nace enseñado amigo mio... ;)

Si puedes ayuderme un pelin te lo agradeceria.

el_otro_yo

Bueno ya lo tengo solucionado eso de ordenar listas de objetos por fecha... muchas gracias al final lo hice yo solo!! si señor!!  ;D  :silbar:  yujuuu!!!

Proteus1989

¿Para empezar... que intentas hacer en esa línea?
Código (java) [Seleccionar]
NOTA misNotas= Arrays.asList(new NOTA("NOTA",2),
    new Titulo("LIBRO1",1),
    new Titulo("PELICULA1",5));


No le encuentro ni pies ni cabeza
EDIT: Enhorabuena pues

el_otro_yo

Gracias pero lo de ordenacion de listas ya lo he resuelto con una nueva instancia de

ArrayList mi_lista = new ArrayList();

//agregamos las NOTAS(instancias) de NOTA
        mi_lista.add("NOTA5");
        mi_lista.add("NOTA2");
        mi_lista.add("NOTA4");
        mi_lista.add("NOTA3");
        mi_lista.add("NOTA1");

y luego uso el collections.sort (mi_lista) con un for y un if y poca cosa mas.

ahora me pasa algo que no se porque me pasa, y es que en otro metodo tengo un error que dice 

Codigo:

public ArrayList<String>buscarLibretasPorNotas(String TituloNota){
     ArrayList<String>resultado=new ArrayList

     for(LIBRETA Libreta:LIBRETAS)
     {
         if(LIBRETA.NotaenLibreta(NOTA1))
         {
             resultado.add(LIBRETA.getTitulo());
         }
     }
   }

el error me sale al compilar justo entes del for y no se el porque.

es el siguiente error de compilacion: ´(´ or ´[´ expected

Si me ayudas te lo agradezco.

RyogiShiki

#6
Ese bucle foreach no se usa así. La forma correcta *concreta en  Este caso debería ser:

Código (java) [Seleccionar]

for( LIBRETA lib : Libreta ) {
   if ( lib.NotaEnLibreta(NOTA1) )
   /*Resto del código*/
}

Donde "Libreta" tiene que ser de tipo "LIBRETA". y "LIBRETA" ha deser un array o una colección
Aquí encontrarás más información de como usar foreach: http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

Ahora te recomiendo que leas esto: http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html y lo pongás en práctica, así es más fácil para las otras personas, y seguramente más tarde para ti también leer el código que escribes.

* Suponiendo que esos son los objetos que usas ya que no conozco la totalidad de la clase

Saludos


el_otro_yo

 Buenas a ver si alguien me dice que porque me da error el compilar cuando uso la variable intermedia for??Gracias por adelantado/**
     * Almacena una NOTA nueva
     * @param NOTA La NOTA que se almacenará.
     */
    public void guardarNOTA(NOTA NOTA)
    { boolean encontrado= false;
        maximoNumeroNOTA=NOTAS.size();
        //Introduccion de una NOTA.
        for(LIBRETA lib:LIBRETAS){
        if(lib.NotaEnLibreta(NOTA1))
    {
        System.out.println("Se ha introducido la NOTA");
        encontrado=true;
    }
    }
        //Comprueba si hay dos NOTAS iguales
        for(NOTA Nota:NOTAS){
         if (Nota.getTitulo().equals(Nota.getTitulo())){
                System.out.println("ESTE TITULO YA EXISTE");
    }
         else
    {
            NOTAS.add(NOTA);
    }
    }
    }

RyogiShiki

No has leido acaso mi mensaje? -.-! en el encontrarás toda la información necesaria de como usar foreach que es como se le denomina a lo que tu llamas "la variable intermedia for". Mira, al menos muéstranos la clase entera dentro de sus respectivas etiquetas GeSHi para saber como construir correctamente el bloque del foreach. mientras tanto y por si no lo viste, pues te cito mi mensaje anterior:

Cita de: RyogiShiki en 16 Mayo 2012, 23:47 PM
Ese bucle foreach no se usa así. La forma correcta *concreta en  Este caso debería ser:

Código (java) [Seleccionar]

for( LIBRETA lib : Libreta ) {
    if ( lib.NotaEnLibreta(NOTA1) )
    /*Resto del código*/
}

Donde "Libreta" tiene que ser de tipo "LIBRETA". y "LIBRETA" ha deser un array o una colección
Aquí encontrarás más información de como usar foreach: http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

Ahora te recomiendo que leas esto: http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html y lo pongás en práctica, así es más fácil para las otras personas, y seguramente más tarde para ti también leer el código que escribes.

* Suponiendo que esos son los objetos que usas ya que no conozco la totalidad de la clase

Saludos

Espero sea de ayuda.

Saludos