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

ArrayList de objetos

Estas en el tema de ArrayList de objetos en el foro de Java en Foros del Web. Hola estoy intentando crear un arraylist de objetos pero me da un fallo a la hora de recorrerlo, me dice que la variable puede no ...
  #1 (permalink)  
Antiguo 09/04/2013, 15:46
 
Fecha de Ingreso: febrero-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
ArrayList de objetos

Hola estoy intentando crear un arraylist de objetos pero me da un fallo a la hora de recorrerlo, me dice que la variable puede no estar inicializada. Os paso el código que tengo, me ayudais?

Case Cuentas:

public class Cuentas {

String Entidad,Sucursal,CodControl,NumCuenta;
private double tipo_interes;
private double saldo;

Cuentas(String Entidad){
this.tipo_interes=tipo_interes;
this.saldo=saldo;
this.Entidad=Entidad;
}

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 Principal:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.*;
//lo siguiente incluye la clase Cuentas.java que tambien he creado
import gestioncuentasbancarias.Cuentas;
/**
*
* @author Fulgencio
*/
public class GestionCuentasBancarias {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int opcion;
// TODO code application logic h1ere
do{
System.out.println("1 -- Crear una Cuenta Nueva");
System.out.println("2 -- Listar Cuentas Disponibles");
System.out.println("7 -- Salir de la Aplicacion");

//int opcion;
String entidad,sucursal,codControl,numCuenta;
entidad="";
//sucursal=0;
//codControl=0;
//numCuenta=0;
Scanner teclado=new Scanner(System.in);
opcion=teclado.nextInt();
//ArrayList<Cuentas> MiCuenta=new ArrayList<Cuentas>();
//ArrayList<Cuentas> ArrayCuentas=new ArrayList();
ArrayList<Cuentas> Cuentas=new ArrayList<Cuentas>();
Cuentas Primera=new Cuentas("");
Cuentas.add(Primera);
switch(opcion){
case 1:
System.out.println("Crear una Cuenta Nueva");
//Creo objeto de Cuenta
Cuentas MiCuenta=new Cuentas(entidad);
MiCuenta=new Cuentas("");
System.out.println("Entidad: ");
entidad=teclado.next();
MiCuenta.Entidad=entidad;
System.out.println("Sucursal: ");
//sucursal=teclado.nextInt();
//MiCuenta.sucursal=sucursal;
System.out.println("Codigo de Control: ");
//codControl=teclado.nextInt();
//MiCuenta.codControl=codControl;
System.out.println("Numero de Cuenta: ");
//numCuenta=teclado.nextInt();
//MiCuenta.numCuenta=numCuenta;
System.out.println("Cuenta: "+MiCuenta.Entidad+"-");
System.out.println("Cuenta creada con éxito");
//Pasar los datos de la cuenta a un arraylist
//Primero creo un ArrayList de tipo Cuentas
ArrayList<Cuentas> ArrayCuentas=new ArrayList();

ArrayCuentas.add(MiCuenta);
break;
case 2:
System.out.println("Listado de Cuentas");

//ArrayCuentas.add(MiCuenta);
//ArrayList<Cuentas> MiCuenta=new ArrayList<Cuentas>();
//Arraylist<Cuentas> ArrayCuentas;
for(int i=0;i<ArrayCuentas.size();i++) {
System.out.println(ArrayCuentas.get(i));
}

break;
//case 7:
//System.out.println("Usted se encuentra fuera del Sistema");
//System.exit(0);
}//fin switch
}while (opcion!=7);
}



}
  #2 (permalink)  
Antiguo 09/04/2013, 17:13
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: ArrayList de objetos

Prueba cambiando

ArrayList<Cuentas> ArrayCuentas=new ArrayList();

por

ArrayList<Cuentas> ArrayCuentas=new ArrayList<Cuentas>();
  #3 (permalink)  
Antiguo 09/04/2013, 17:26
 
Fecha de Ingreso: febrero-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: ArrayList de objetos

Gracias por la respuesta pero ahora cuando le doy a la opcion 2 me sale
Listado de Cuentas
gestioncuentasbancarias.Cuentas@79717e
por que?
he cambiado lo que me dijiste y ademas he cambiado el bucle por
for(int i=0;i<Cuentas.size();i++) {
System.out.println(Cuentas.get(i));
}
  #4 (permalink)  
Antiguo 09/04/2013, 17:29
Avatar de henrri  
Fecha de Ingreso: enero-2011
Mensajes: 40
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: ArrayList de objetos

mis ojos, usen la etiqueta para codigo....
  #5 (permalink)  
Antiguo 09/04/2013, 17:32
 
Fecha de Ingreso: febrero-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: ArrayList de objetos

lo siento
por favor necesitaria la solucion amis problemas,
necesito recorrer el arraylist y mostrar su contenido
estoy dudando de si introduzco cosas en el arraylist
  #6 (permalink)  
Antiguo 09/04/2013, 22:10
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: ArrayList de objetos

Bueno, segun puedo ver, no tienes en la clase Cuentas los metodos getters para mostrar la informacion y el metodo get que es heredado de la clase object solo te muestra al identficador de la clase, por otro lado la practica correcta de crear un ArrayList es: List<Cuentas> arrayCuentas = new ArrayList<Cuentas>();. las variables comienzan en minusculas a menos que sean constantes que van todas en mayusculas; para recorrer esta variable puedes usar el for each que se usa así: for(Cuentas cu: arrayCuentas){aqui colocas como mostrar lo que quieres}. Saludos
  #7 (permalink)  
Antiguo 09/04/2013, 22:26
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: ArrayList de objetos

Voy a ayudarte con tu clase Cuentas:
Código Javascript:
Ver original
  1. public class Cuentas{
  2.    /* todas las variable deben ser privadas y para acceder a ellas deben tener metodos publicos set y get */
  3.    private String entidad, sucursal, codControl, numCuenta;
  4.    private double tipoInteres, saldo;
  5.  
  6.    /* el constructor debe solicitar todos los argumentos que quieres al inicio, en tu clase solo pides un argumento en el constructor y luego le inicializas tres variables de la cuales dos están huerfanas, con tu constructor solo puedes inicializar una y le estas pasando un argumento vacio, yo usaria un constructor sin argumentos, y para esto si no escribes ninguno se crea por defecto  */
  7.  
  8.    /* este metodo te devolvera un error ya que la variable entidad no ha sido inicializada
  9.        para evitar esto puedes crear la variable de esta forma String entidad = null; */
  10.    public String getEntidad(){
  11.       return entidad
  12.    }
  13.  
  14.    public void setEntidad(String entidad){
  15.       this.entidad = entidad;
  16.    }
  17.    
  18.   /* tu encargate del resto y espero que te sirva de algo mis comentarios */
  19.  
  20. }
  #8 (permalink)  
Antiguo 10/04/2013, 01:14
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: ArrayList de objetos

Realmente si creas una entidad java no devuelve error si no inicializas sus variables. Algunas de tipo primitivo si te pedirá que las inicialices, pero nunca sus wrappers (Object), como String.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #9 (permalink)  
Antiguo 10/04/2013, 23:49
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: ArrayList de objetos

Cita:
Iniciado por Fuzzylog Ver Mensaje
Realmente si creas una entidad java no devuelve error si no inicializas sus variables. Algunas de tipo primitivo si te pedirá que las inicialices, pero nunca sus wrappers (Object), como String.
bueno, retiro lo dicho… disculpen por opinar
  #10 (permalink)  
Antiguo 11/04/2013, 01:15
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: ArrayList de objetos

Si está perfecto que opines, yo también lo hago. :D

Y también me equivoco a veces.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #11 (permalink)  
Antiguo 11/04/2013, 04:34
 
Fecha de Ingreso: febrero-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: ArrayList de objetos

Hola, me sigue danod los mismos errores, lo he modificado un poco pero creo que el error es que no meto objetos en el arraylist ¿que opinais?

CaseCuentas
package gestionbanco;

/**
*
* @author Fulgencio
*/
public class ClaseCuentas {
private String NumCuenta;
private String Titular;
private int Saldo;


public String getNumCuenta(){
return this.NumCuenta;
}

public void setNumCuenta(String NumCuenta){
this.NumCuenta=NumCuenta;
}

/**
* @return the Titular
*/
public String getTitular() {
return Titular;
}

/**
* @param Titular the Titular to set
*/
public void setTitular(String Titular) {
this.Titular = Titular;
}

/**
* @return the Saldo
*/
public int getSaldo() {
return Saldo;
}

/**
* @param Saldo the Saldo to set
*/
public void setSaldo(int Saldo) {
this.Saldo = Saldo;
}

public ClaseCuentas() {
}

public ClaseCuentas(String NumCuenta, String Titular, int Saldo) {
this.NumCuenta = NumCuenta;
this.Titular = Titular;
this.Saldo = Saldo;
}
}
**********************
Clase GestionBanco
package gestionbanco;
import java.util.Scanner;
import java.util.ArrayList;
import gestionbanco.ClaseCuentas;
/**
*
* @author Fulgencio
*/
public class GestionBanco {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int opcion;

do{
//Creacion del menu
System.out.println("Administracion de Cuentas");
System.out.println("1 --- Crear una Cuenta Nueva");
System.out.println("2 --- Listar las Cuentas");
System.out.println("7 --- Salir del Sistema");
Scanner teclado=new Scanner(System.in);
opcion=teclado.nextInt();
//Declaro el ArrayList
ArrayList<ClaseCuentas> ArrayCuentas;
ArrayCuentas=new ArrayList<ClaseCuentas>();

//Variable iterar
//int casilla=0;
//while(casilla<ClaseCuentas.size()){
switch(opcion){
case 1:
String textoNumCuenta,textoTitular;
int textoSaldo;
//Scanner teclado=new Scanner(System.in);
System.out.println("Numero de la Cuenta: ");
textoNumCuenta=teclado.next();
System.out.println("Titular de la Cuenta: ");
textoTitular=teclado.next();
System.out.println("Saldo de la Cuenta: ");
textoSaldo=teclado.nextInt();
//variable temporal para almacenar un objeto Cuenta
ClaseCuentas cuentaTemporal;
cuentaTemporal=new ClaseCuentas();
cuentaTemporal.setNumCuenta(textoNumCuenta);
cuentaTemporal.setTitular(textoTitular);
cuentaTemporal.setSaldo(textoSaldo);
cuentaTemporal=new ClaseCuentas(textoNumCuenta,textoTitular,textoSald o);
//se pasan los valores temporales al ArrayList
//ArrayCuentas=cuentaTemporal.getNumCuenta();

//ArrayCuentas.add(cuentaTemporal);
ArrayCuentas.add(cuentaTemporal);

break;//Fin opcion 1 crear cuenta nueva
//casilla++;
//}

//Recorrer Array
//casilla=0;
case 2:

for(int i=0;i<ArrayCuentas.size();i++) {
System.out.println(ArrayCuentas.get(i).getTitular( ));
}
System.out.println(ArrayCuentas.size());

break;//fin opcion 2 listar cuentas
}//Fin switch

}while(opcion!=7);//SAlir
// }
}//Fin main
}
  #12 (permalink)  
Antiguo 11/04/2013, 16:11
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: ArrayList de objetos

Cita:
Iniciado por Fuzzylog Ver Mensaje
Si está perfecto que opines, yo también lo hago. :D

Y también me equivoco a veces.
La cosa es que primero debes leer, no es lo mismo una entidad en java que una variable con el nombre entidad
  #13 (permalink)  
Antiguo 11/04/2013, 17:22
 
Fecha de Ingreso: julio-2012
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: ArrayList de objetos

Debido a que ya estas muy cerca de la solucion te la dare para que la compares y asi tu mismo veas los errores
Clase Cuenta
Código Javascript:
Ver original
  1. public class Cuenta {
  2.     private String numCuenta;
  3.     private String titular;
  4.     private double saldo;
  5.    
  6.     public Cuenta(){
  7.         this(null,null,0);
  8.     }
  9.    
  10.     public Cuenta(String numCuenta, String titular, double saldo){
  11.         this.numCuenta = numCuenta;
  12.         this.titular = titular;
  13.         this.saldo = saldo;
  14.     }
  15.    
  16.     public String getNumCuenta() {
  17.         return numCuenta;
  18.     }
  19.    
  20.     public void setNumCuenta(String numCuenta) {
  21.         this.numCuenta = numCuenta;
  22.     }
  23.    
  24.     public String getTitular() {
  25.         return titular;
  26.     }
  27.    
  28.     public void setTitular(String titular) {
  29.         this.titular = titular;
  30.     }
  31.    
  32.     public double getSaldo() {
  33.         return saldo;
  34.     }
  35.    
  36.     public void setSaldo(double saldo) {
  37.         this.saldo = saldo;
  38.     }
  39. }

Clase GestionBanco
Código Javascript:
Ver original
  1. import java.util.List;
  2. import java.util.Scanner;
  3. import java.util.ArrayList;
  4.  
  5. public class GestionBanco {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         List<Cuenta> cuentas = new ArrayList<Cuenta>();
  10.         int opcion;
  11.         do {
  12.             System.out.println("Administracion de Cuentas");
  13.             System.out.println("1 --- Crear una Cuenta Nueva");
  14.             System.out.println("2 --- Listar las Cuentas");
  15.             System.out.println("7 --- Salir del Sistema");
  16.             Scanner teclado = new Scanner(System.in);
  17.             opcion = teclado.nextInt();
  18.  
  19.             // Variable iterar
  20.             // int casilla=0;
  21.             // while(casilla<ClaseCuentas.size()){
  22.             switch (opcion) {
  23.             case 1:
  24.                 // se crea una variable de tipo cuenta y se inicia sin ningun
  25.                 // argumento
  26.                 Cuenta cuenta = new Cuenta();
  27.  
  28.                 // se establecen los valores de la variable cuenta
  29.                 System.out.println("Numero de la Cuenta: ");
  30.                 cuenta.setNumCuenta(teclado.next());
  31.                 System.out.println("Titular de la Cuenta: ");
  32.                 cuenta.setTitular(teclado.next());
  33.                 System.out.println("Saldo de la Cuenta: ");
  34.                 cuenta.setSaldo(Double.parseDouble(teclado.next().trim()));
  35.  
  36.                 // ArrayCuentas.add(cuentaTemporal);
  37.                 if(cuentas.add(cuenta)) System.out.println("La creacion de la cuenta ha sido exitosa...\n\n");
  38.                 break;
  39.  
  40.             case 2:
  41.                 for (Cuenta cta : cuentas) {
  42.                     String imprimir = "\nNumero de Cuenta: " + cta.getNumCuenta()
  43.                             + "   Titular de la Cuenta: " + cta.getTitular()
  44.                             + "   Saldo en Cuenta: " + cta.getSaldo();
  45.                     System.out.println(imprimir);
  46.                 }System.out.println("\n");
  47.                 break;
  48.            
  49.             case 7:
  50.                 System.out.println("Saliendo del sistema...Bye");
  51.                 break;
  52.                
  53.             default:
  54.                 System.out.println("Opcion invalida... Intente nuevamente\n\n");
  55.                 break;
  56.             }
  57.  
  58.         } while (opcion != 7);
  59.     }
  60. }

Recuerda que las buenas practicas exigen algunas normas estándar, entre las cuales te sugiero algunas con las que no cumples:
1.- los nombres de las variables se escriben siempre con letras minúsculas.
2.- los nombres de las constantes se escriben en mayúsculas y preferiblemente de acceso público y estatico.
3.- los nombres de las clases se escriben capitalizados.

Etiquetas: arraylist, clase, objetos, string
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 10:30.