Foros del Web » Programación para mayores de 30 ;) » Java »

Tengo un Problema con ArrayList

Estas en el tema de Tengo un Problema con ArrayList en el foro de Java en Foros del Web. Hola, bueno el caso es el siguiente: Tengo que hacer un programa en java, que simule una biblioteca estudiantil, permitiendose ingresar nuevos libros, estudiantes y ...
  #1 (permalink)  
Antiguo 22/07/2013, 11:45
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Tengo un Problema con ArrayList

Hola, bueno el caso es el siguiente:

Tengo que hacer un programa en java, que simule una biblioteca estudiantil, permitiendose ingresar nuevos libros, estudiantes y profesores. Los profesores y los estudiantes pueden pedir libros prestados, los cuales deben aparecer como NO DISPONIBLE o DISPONIBLE. También se deben poder, (ademas de ingresar estudiantes, profesores y libros) modificarlos y eliminarlos.

Mi duda es como puedo ingresar los datos por ejemplo del Nombre, Apellido, CI, Telefono con un mismo indice en un arraylist. No se si es posible, pero espero que me puedan ayudar :D
  #2 (permalink)  
Antiguo 22/07/2013, 12:15
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Tengo un Problema con ArrayList

Nunca he visto algo así, no se si será una buena construmbre debido a que un ArrayList es como una matriz

Lo que te aconsejo es hacer un ArrayList del Objeto, si es que trabajas con POO, y guardar los objetos dentro del ArrayList, luego solo juegas con for

Si no es POO

Ve si funciona esto
Código Java:
Ver original
  1. String[][] cadena = new String[1][3];
  2. //Aqui metes los datos a la matriz
  3.  
  4. ArrayList<String> arr = new ArrayList<String>();
  5. arr.add(cadena);

Intenta, nunca lo he intentado, pero de eso se trata la programación; intentar, fallar, reintentar.

Saludos
  #3 (permalink)  
Antiguo 23/07/2013, 14:53
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Tengo un Problema con ArrayList

Cita:
Iniciado por rottenp4nx Ver Mensaje
Nunca he visto algo así, no se si será una buena construmbre debido a que un ArrayList es como una matriz

Lo que te aconsejo es hacer un ArrayList del Objeto, si es que trabajas con POO, y guardar los objetos dentro del ArrayList, luego solo juegas con for

Si no es POO

Ve si funciona esto
Código Java:
Ver original
  1. String[][] cadena = new String[1][3];
  2. //Aqui metes los datos a la matriz
  3.  
  4. ArrayList<String> arr = new ArrayList<String>();
  5. arr.add(cadena);

Intenta, nunca lo he intentado, pero de eso se trata la programación; intentar, fallar, reintentar.

Saludos
Primero que todo muchisimas gracias por responder, si, trabajo con POO, había estado intentando guardar los objetos dentro de un arraylist pero no sabía como hacerlo. La verdad es que soy muy nuevo en esto de programación, pero bueno, después de buscar y buscar encontre la forma de hacer eso que me decias, muchisimas gracias por responder, saludos :D

PD: Espero poder responder alguna duda algún dia :D
  #4 (permalink)  
Antiguo 23/07/2013, 17:18
Avatar de Krain  
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Tengo un Problema con ArrayList

Hola amigo, bueno esto es mi primer mensaje aquí así que no se como pegarte el código como el compañero de arriba para que te quede "molón".
Yo lo que haría seria como te han comentado hacer un arraylist de libros en este caso.
Código:
ArrayList <Libro> arrayLibros = new ArrayList();
Con esto si en el constructor de los libros pides los datos como el nombre y todo eso te lo debería guardar junto y luego para seleccionar los libros lo que haria seria crearme un método que se llame recuperarNombre, recuperarISBN, recuperarTitulo o recuperarDisponibles o todos ellos dependiendo de porque los quieras recuperar.
Código:
public Libro recuperarDisponible()
{ 
     Libro libro = null;
     for(int i = 0; i < arrayLibros.size(); i++)
     {
         if(arrayLibros.get(i).isDisponible())
         {
             libro = arrayLibros.get(i);        
         }
     }        
     return libro;   
}
con eso te debería pillar los libros que tengan disponible en true.

Última edición por Krain; 23/07/2013 a las 17:22 Razón: Editado por faltas de ortografía ¬¬
  #5 (permalink)  
Antiguo 24/07/2013, 08:51
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Tengo un Problema con ArrayList

Cita:
Iniciado por Krain Ver Mensaje
Hola amigo, bueno esto es mi primer mensaje aquí así que no se como pegarte el código como el compañero de arriba para que te quede "molón".
Yo lo que haría seria como te han comentado hacer un arraylist de libros en este caso.
Código:
ArrayList <Libro> arrayLibros = new ArrayList();
Con esto si en el constructor de los libros pides los datos como el nombre y todo eso te lo debería guardar junto y luego para seleccionar los libros lo que haria seria crearme un método que se llame recuperarNombre, recuperarISBN, recuperarTitulo o recuperarDisponibles o todos ellos dependiendo de porque los quieras recuperar.
Código:
public Libro recuperarDisponible()
{ 
     Libro libro = null;
     for(int i = 0; i < arrayLibros.size(); i++)
     {
         if(arrayLibros.get(i).isDisponible())
         {
             libro = arrayLibros.get(i);        
         }
     }        
     return libro;   
}
con eso te debería pillar los libros que tengan disponible en true.
Gracias por responder :D, el problema principal es que estoy bastante perdido, no se como empezar, por ejemplo una de mis dudas (puede parecer bastante tonta) es para que sirve el constructor, estuve tratando de ingresar los datos al ArrayList pero no los guarda, tampoco se como mostrarlos, busque ejemplos en Internet pero ninguno me quedo completamente claro, estoy bastante entreverado :S.

La verdad, ya hace como 1 semana que estoy con esto buscando y buscando, me gustaría y serviría muchísimo que me des como un ejemplo de un programa que ingrese, muestre, modifique y busque por ejemplo Libros, solo con 2 atributos, nombre y código. De verdad te agradecería mucho porque la verdad que no entiendo muy bien como funciona todo esto.

Gracias por responder :D.

PD: Jaja me alegra que mi pregunta haya sido la primera que respondiste xD
  #6 (permalink)  
Antiguo 24/07/2013, 15:36
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Tengo un Problema con ArrayList

No me acuerdo muy bien de la teoría, pero siempre se deben instanciar los Objetos en la POO, el constructor sirve para instanciar(inicializar) un objeto, el constructor debe tener el mismo nombre de la clase y pueden haber varios constructores, en que se diferencian? En los argumentos del constructor. Un Ejemplo:
Código Java:
Ver original
  1. public class Libro{
  2.  
  3.    //Atributos o Propiedades del objeto
  4.    private String codigo;
  5.    private String nombre;
  6.    private boolean estado;
  7.  
  8.    //Constructor Vacío, por lo general lo crea el IDE automáticamente, estado escrito
  9.    //o no, pero es recomendable escribirlo
  10.  
  11.   public Libro(){
  12.   }
  13.  
  14.   //Constructor con argumentos, instancia el objeto con los argumentos pasados
  15.  
  16.   public Libro(String codigo, String nombre, boolean estado){
  17.       this.codigo = codigo;
  18.       this.nombre = nombre;
  19.       this.estado = estado;
  20.   }
  21.  
  22.   public String getNombre(){
  23.         return this.nombre;
  24.   }
  25.  
  26.   public void setNombre(String nombre){
  27.          this.nombre=nombre;
  28.   }
  29.  
  30.  
  31.   public String getCodigo(){
  32.         return this.codigo;
  33.   }
  34.  
  35.   public void setCodigo(String codigo){
  36.          this.codigo=codigo;
  37.   }
  38.  
  39.  
  40.   public boolean isEstado(){
  41.         return this.estado;
  42.   }
  43.  
  44.   public void setEstado(boolean estado){
  45.          this.estado=estado;
  46.   }
  47. }

Veamos, instanciado con constructor vacío.
Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. //no se mostrará nada

Si vemos, el objeto está instanciado, pero no se le han pasado datos a los atributos. Agreguemos datos:

Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. l.setNombre("El Túnel");
  4. System.out.println(l.getNombre());
  5. //Mostrará "El Túnel"

Ahí le asignamos datos al atributo nombre del objeto libro.
Ahora veamos un constructor con argumentos.
Código Java:
Ver original
  1. Libro l = new Libro("abc123","Niebla",true);
  2. System.out.println(l.getNombre());
  3. //Mostrará "Niebla"


//Veamos un objeto sin instanciar
Código Java:
Ver original
  1. Libro l;
  2. System.out.println(l.getNombre());

Vemos que da un error, por no estar instanciado el objeto. El famoso NullPointerException
------------------------------------------

Ahora ArrayList
Código Java:
Ver original
  1. public class Libros{
  2.  
  3.   //Creamos el arraylist
  4.   private ArrayList<Libro> mislibros;
  5.  
  6.   //Constructor de la clase
  7.    public Libros(){
  8.      mislibros = new ArrayList<Libro>();
  9.    }
  10.  
  11.   public Libro buscarLibroporNombre(String nombre){
  12.        for(Libro l : mislibros){
  13.             if(l.getNombre().equals(nombre)){
  14.                   return l;
  15.             }
  16.        }
  17.        return null;
  18.    }
  19.  
  20.    public void agregarLibro(Libro l){
  21.         mislibros.add(l);
  22.    }
  23.  
  24.    public void mostrarLibros(){
  25.         for(Libro l: mislibros){
  26.              System.out.println(l.getNombre());
  27.         }
  28.    }
  29.  
  30. }

Ahora en la clase Main o principal, ponemos a prueba lo Anterior

Código Java:
Ver original
  1. Libros libros = new Libros();
  2.   Libro l = new Libro("abc123","El tunel", true);
  3.   libros.agregarLibro(l);
  4.   Libro l2 = new Libro("zxc343","Niebla",false);
  5.   libros.agregarLibro(l2);
  6.   Libros l3 = new Libro();
  7.   l3.setCodigo("qwerty");
  8.   l3.setNombre("Elegi vivir");
  9.   l3.setEstado(true);
  10.   libros.agregarLibro(l3);
  11.  
  12.   libros.mostrarLibros();
  13.   l = libros.buscarLibro("El tunel");
  14.   System.out.println(l.getCodigo());
  15.   System.out.println(l.getNombre());
  16.   System.out.println(l.isEstado());


Solo te queda practicar, Saludos
  #7 (permalink)  
Antiguo 24/07/2013, 17:00
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Tengo un Problema con ArrayList

Cita:
Iniciado por rottenp4nx Ver Mensaje
No me acuerdo muy bien de la teoría, pero siempre se deben instanciar los Objetos en la POO, el constructor sirve para instanciar(inicializar) un objeto, el constructor debe tener el mismo nombre de la clase y pueden haber varios constructores, en que se diferencian? En los argumentos del constructor. Un Ejemplo:
Código Java:
Ver original
  1. public class Libro{
  2.  
  3.    //Atributos o Propiedades del objeto
  4.    private String codigo;
  5.    private String nombre;
  6.    private boolean estado;
  7.  
  8.    //Constructor Vacío, por lo general lo crea el IDE automáticamente, estado escrito
  9.    //o no, pero es recomendable escribirlo
  10.  
  11.   public Libro(){
  12.   }
  13.  
  14.   //Constructor con argumentos, instancia el objeto con los argumentos pasados
  15.  
  16.   public Libro(String codigo, String nombre, boolean estado){
  17.       this.codigo = codigo;
  18.       this.nombre = nombre;
  19.       this.estado = estado;
  20.   }
  21.  
  22.   public String getNombre(){
  23.         return this.nombre;
  24.   }
  25.  
  26.   public void setNombre(String nombre){
  27.          this.nombre=nombre;
  28.   }
  29.  
  30.  
  31.   public String getCodigo(){
  32.         return this.codigo;
  33.   }
  34.  
  35.   public void setCodigo(String codigo){
  36.          this.codigo=codigo;
  37.   }
  38.  
  39.  
  40.   public boolean isEstado(){
  41.         return this.estado;
  42.   }
  43.  
  44.   public void setEstado(boolean estado){
  45.          this.estado=estado;
  46.   }
  47. }

Veamos, instanciado con constructor vacío.
Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. //no se mostrará nada

Si vemos, el objeto está instanciado, pero no se le han pasado datos a los atributos. Agreguemos datos:

Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. l.setNombre("El Túnel");
  4. System.out.println(l.getNombre());
  5. //Mostrará "El Túnel"

Ahí le asignamos datos al atributo nombre del objeto libro.
Ahora veamos un constructor con argumentos.
Código Java:
Ver original
  1. Libro l = new Libro("abc123","Niebla",true);
  2. System.out.println(l.getNombre());
  3. //Mostrará "Niebla"


//Veamos un objeto sin instanciar
Código Java:
Ver original
  1. Libro l;
  2. System.out.println(l.getNombre());

Vemos que da un error, por no estar instanciado el objeto. El famoso NullPointerException
------------------------------------------

Ahora ArrayList
Código Java:
Ver original
  1. public class Libros{
  2.  
  3.   //Creamos el arraylist
  4.   private ArrayList<Libro> mislibros;
  5.  
  6.   //Constructor de la clase
  7.    public Libros(){
  8.      mislibros = new ArrayList<Libro>();
  9.    }
  10.  
  11.   public Libro buscarLibroporNombre(String nombre){
  12.        for(Libro l : mislibros){
  13.             if(l.getNombre().equals(nombre)){
  14.                   return l;
  15.             }
  16.        }
  17.        return null;
  18.    }
  19.  
  20.    public void agregarLibro(Libro l){
  21.         mislibros.add(l);
  22.    }
  23.  
  24.    public void mostrarLibros(){
  25.         for(Libro l: mislibros){
  26.              System.out.println(l.getNombre());
  27.         }
  28.    }
  29.  
  30. }

Ahora en la clase Main o principal, ponemos a prueba lo Anterior

Código Java:
Ver original
  1. Libros libros = new Libros();
  2.   Libro l = new Libro("abc123","El tunel", true);
  3.   libros.agregarLibro(l);
  4.   Libro l2 = new Libro("zxc343","Niebla",false);
  5.   libros.agregarLibro(l2);
  6.   Libros l3 = new Libro();
  7.   l3.setCodigo("qwerty");
  8.   l3.setNombre("Elegi vivir");
  9.   l3.setEstado(true);
  10.   libros.agregarLibro(l3);
  11.  
  12.   libros.mostrarLibros();
  13.   l = libros.buscarLibro("El tunel");
  14.   System.out.println(l.getCodigo());
  15.   System.out.println(l.getNombre());
  16.   System.out.println(l.isEstado());


Solo te queda practicar, Saludos
Hola, de verdad, muchísimas gracias por responder, se que ustedes tienen otras cosas que hacer y aún así ayudan, eso me gusta.

Bueno, por otro lado estuve intentando hacer que funcione, creo que está bastante bien lo que voy haciendo, pero aún así me tira un error, mira cree otro post: http://www.forosdelweb.com/f45/error-uno-mis-programas-1066651/

Esto lo hice antes de leer tu mensaje, ahora trataré de mejorarlo con lo que me dijiste, pero de igual forma si puedes revisar cual es el error que tengo te agradecería :D

Muchas gracias y a las órdenes.


EDIT:

Ahora estuve revisando el ejemplo que me diste y parece que funcionará, la verdad es que está muy bueno, la única duda que tengo es si yo para cada libro nuevo que se ingrese tengo que crear un nuevo: Libro 15 = new Libro();

Última edición por ghacke; 24/07/2013 a las 17:10
  #8 (permalink)  
Antiguo 24/07/2013, 17:21
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Tengo un Problema con ArrayList

Si quieres hacer un libro nuevo, obviamente hay que instanciar otro objeto

Código Java:
Ver original
  1. Libro l = new Libro("abc123","Nombre",true);
  2. libros.agregarLibro(l);
  3. l = new Libro("abc456","OtroNombre",false);
  4. libros.agregarLibro(l);

Si estas trabajando con GUI (Interfaz gráfica), te será más fácil y lo entenderás mejor.

Saludos

Etiquetas: arraylist, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:45.