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

ArrayList dentro de Clases.

Estas en el tema de ArrayList dentro de Clases. en el foro de Java en Foros del Web. Buenas. Bueno, tengo un poco de jaleo con los ArrayList. Tengo que hacer una aplicación que trata sobre la gestión de un banco, es decir, ...
  #1 (permalink)  
Antiguo 24/04/2011, 10:19
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años, 7 meses
Puntos: 2
Pregunta ArrayList dentro de Clases.

Buenas. Bueno, tengo un poco de jaleo con los ArrayList.

Tengo que hacer una aplicación que trata sobre la gestión de un banco, es decir, cuentas corrientes y clientes.

Bueno, pues había pensado en crear un ArrayList de objetos "Cliente" pudiendo crear así muchos objetos Cliente con sus atributos y sus métodos.
Ahora, para las cuentas corrientes he creado también una clase "Cuenta" igual que cliente, con sus atributos y eso.

Ahora, una cuenta es de un único cliente, pero un cliente puede tener varias cuentas, así que mi idea ha sido crear un atributo ArrayList en la clase Cliente que sea de tipo Cuenta, consiguiendo así tener un cliente con varias cuentas pero que sean únicas a el.

Bien, todo eso está hecho ya, pero a la hora de acceder me da el siguiente error:

Código PHP:
Exception in thread "main" java.lang.NullPointerException
        at Hoja2_Ampliacion
.Cliente.agregarCuenta(Cliente.java:49)
        
at Hoja2_Ampliacion.CuentaCorriente.main(CuentaCorriente.java:16)
Java Result
Por lo que deduzco más o menos es que no hace bien la referencia al arraylist dentro de cuenta no?

Espero vuestra ayuda.

Un saludo.
  #2 (permalink)  
Antiguo 24/04/2011, 14:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 16 años
Puntos: 1
Respuesta: ArrayList dentro de Clases.

Estaría bien que posteases también tus clases. El error que te da es un null pointer, por lo que te habrás dejado algun objeto sin inicializar, ya que este tipo de errores suceden cuando intentas acceder a objetos no inicializados. Comprueba que haces un new Cliente() y también un new Cuenta() por cada cuenta que quieras integrarle al cliente en el método main.
  #3 (permalink)  
Antiguo 24/04/2011, 14:28
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: ArrayList dentro de Clases.

Juraría que accedo bien, pero bueno, os pongo lo que tengo.


Código PHP:
package Hoja2_Ampliacion;
import java.util.Scanner;
import java.util.ArrayList;
/**
 *
 * @author Jesús
 */
public class CuentaCorriente {
    public static 
void main(String[] args) {
        
Scanner lectura = new Scanner(System.in);
        
ArrayList<Clienteclientes=new ArrayList<Cliente>();
        
        
clientes.add(new Cliente("Jose"020"Calle Extremadura 1"120));
        
clientes.add(new Cliente("Jesus"021"Calle Extremadura 3"125));
        
        
clientes.get(0).agregarCuenta();
        
        
/*System.out.println("El primer cliente es: "+clientes.get(0).getNombre()+" Con tipo de interés: "+clientes.get(0).obtenerTipoInteres1()+" Con saldo: "+clientes.get(0).getSaldo());*/
    
}

Clase Cuenta:
Código PHP:
package Hoja2_Ampliacion;
class 
Cuenta {

    private 
double tipo_interes;
    private 
double saldo;

    
Cuenta(double tipo_interesdouble saldo){
        
this.tipo_interes=tipo_interes;
        
this.saldo=saldo;
    }

    
void setTipoInteres(double a){
        
tipo_interes=a;
    }
    
void setSaldo(double b){
        
saldo=b;
    }
    
double getTipoInteres(){
        return 
tipo_interes;
    }
    
double getSaldo(){
        return 
saldo;
    }
    
void aumentarSaldo(int saldo){
        if(
saldo<0){
            
saldo=saldo*(-1);
        }
        
this.saldo=this.saldo+saldo;
    }

    
void disminuirSaldo(int saldo){
        if(
saldo>0){
            
saldo=saldo*(-1);
        }
        
this.saldo=this.saldo+saldo;
    }



Clase Cliente
Código PHP:
package Hoja2_Ampliacion;

import java.util.ArrayList;

/**
 *
 * @author Jesús
 */
public class Cliente {
    private 
String nombre;
    private 
int dni;
    private 
String direccion;
    private 
int telefono;
    private 
ArrayList<Cuentacuentas;

    
Cliente(String nombreint dniString direccionint telefono){
        
this.nombre=nombre;
        
this.dni=dni;
        
this.direccion=direccion;
        
this.telefono=telefono;
    }

    
void setNombre(String nombre){
        
this.nombre=nombre;
    }
    
String getNombre(){
        return 
nombre;
    }
    
void setDNI(int dni){
        
this.dni=dni;
    }
    
int getDNI(){
        return 
dni;
    }
    
void setDireccion(String direccion){
        
this.direccion=direccion;
    }
    
String getDireccion(){
        return 
direccion;
    }
    
void setTelefono(int telefono){
        
this.telefono=telefono;
    }
    
int getTelefono(){
        return 
telefono;
    }

    
void agregarCuenta(){
        
cuentas.add(new Cuenta(312,1500));

    }
    
double obtenerTipoInteres1(){
        return 
cuentas.get(0).getTipoInteres();
    }


    
void agregarCuenta2(){
        
cuentas.add(new Cuenta(3512,100500));
    }
    
double obtenerTipoInteres2(){
        return 
cuentas.get(1).getTipoInteres();
    }
    
double getSaldo(){
        return 
cuentas.get(0).getSaldo();
    }
    
double getSaldo1(){
        return 
cuentas.get(1).getSaldo();
    }

A ver si veis el error.

Un saludo y gracias por la ayuda.
  #4 (permalink)  
Antiguo 25/04/2011, 07:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 16 años
Puntos: 1
Respuesta: ArrayList dentro de Clases.

Vale, en la clase cliente tienes que inicializar el array de cuentas, bien en la declaración o bien en el mismo constructor. De no ser así, al agregar una nueva cuenta, estamos accediendo al objeto sin inicializar. Suerte!
  #5 (permalink)  
Antiguo 25/04/2011, 08:04
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: ArrayList dentro de Clases.

Perfecto! Lo he iniciado así
Código PHP:
private ArrayList<Cuentacuentas=new ArrayList<Cuenta>(); 
Y ya me funciona. Muchas gracias ;)

Etiquetas: arraylist, clases
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 13:08.