Autor
|
Tema: Vector de objetos (Leído 4,660 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos estoy utilizando el API de Java para crear un vector de objetos tipo Gasto class Gasto{ public float monto; public float iva; public float total; public Fecha mifecha; public Gasto (String concepto, float monto, float iva, float total,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=iva; this.total=total; this.mifecha=mifecha; } }
pero en la clase ManejadorGastos en su método agregar sólo utiliza los atributos concepto,monto y fecha. class ManejadorGastos{ private Gasto gasto=null;//agregacion private Vector<Gasto> vector; public ManejadorGastos(){ vector = new Vector<Gasto>(); } public void agregarGasto (String concepto, float monto,Fecha fecha ){ Gasto g; g = new Gasto(concepto,monto,fecha); vector.add(g); } }
pero en g=new Gasto me aparece un error, la clase Fecha ya la tengo implementada pero no la puse porque es muy larga gracias
|
|
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
Te dará error porque el constructor Gasto(String, float, Fecha) no está definido, el que tu has puesto tiene dos parámetros más (iva y total).
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos Valkyrya le agregue los atributos iva y total pero ahora me sale que iva y total cannot be resolved y no entiendo por qué class Gasto{ public float monto; public float iva; public float total; public Fecha mifecha; public Gasto (String concepto, float monto, float iva, float total,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=iva; this.total=total; this.mifecha=mifecha; } } class ManejadorGastos{ private Gasto gasto=null; private Vector<Gasto> vector; public ManejadorGastos(){ vector = new Vector<Gasto>(); } public void agregarGasto (String concepto, float monto,Fecha fecha ){ Gasto g; g = new Gasto(concepto,monto,iva,total,fecha); vector.add(g); }
en el método agregarGasto solo puede tener los parametros concepto, monto y fecha, así me lo exigieron gracias
|
|
« Última modificación: 14 Junio 2012, 01:19 am por m@o_614 »
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola Si el constructor tiene 5 parámetros al llamarlo tienes que pasarle 5 parámetros, pero éstos deben existir. En tu método agregarGasto le pasas los 5 pero iva y total no están declarados, los otros 3 los recibes por parámetro. Por lo tanto si solo puedes tener los parametros concepto, monto y fecha debes crearte otro constructor con 3 parámatros así: class Gasto{ public float monto; public float iva; public float total; public Fecha mifecha; public Gasto (String concepto, float monto, float iva, float total,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=iva; this.total=total; this.mifecha=mifecha; } public Gasto (String concepto, float monto, Fecha mifecha ) { this.concepto=concepto; this.monto=monto; this.iva=0; this.total=0; this.mifecha=mifecha; } } class ManejadorGastos{ private Gasto gasto=null; private Vector<Gasto> vector; public ManejadorGastos(){ vector = new Vector<Gasto>(); } public void agregarGasto (String concepto, float monto,Fecha fecha ){ Gasto g; g = new Gasto(concepto,monto,fecha); vector.add(g); }
o también puedes tener el método así public void agregarGasto (String concepto, float monto,Fecha fecha ){ Gasto g; float iva = 0, total = 0; g = new Gasto(concepto, iva, total, monto, fecha); vector.add(g); }
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
muchas gracias por tu respuesta satu ya hice las correcciones que me dijiste, ahora solo tengo una última duda, a la clase ManejadorGastos le tuve que implementar un método que me agregara un registro de gastos, otro método que al pasarle la posicion me devolviera el gasto qeu se encuentra en esa posicion y otro método para contar cuantos registro tengo, ya lo hice y no me marca errores pero quiero saber si esta hecho correctamente class Gasto{ public float monto; public float iva; public float total; public Fecha mifecha; public Gasto (String concepto, float monto, float iva, float total,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=iva; this.total=total; this.mifecha=mifecha; } public Gasto (String concepto, float monto,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=0; this.total=0; this.mifecha=mifecha; } } class ManejadorGastos{ private Gasto gasto=null; private Vector<Gasto> vector; public ManejadorGastos(){ vector = new Vector<Gasto>(); } public void agregarGasto (String concepto, float monto,Fecha fecha ){ gasto = new Gasto(concepto,monto,fecha); vector.add(gasto); } public Gasto consultarGasto(int posicion){ for(posicion=0;posicion<vector.size();posicion++){ gasto = vector.get(posicion); } return gasto; } return gasto.concepto+"\t"+gasto.monto+"\t"+gasto.iva+"\t"+gasto.total+ "\t"+gasto.mifecha; } public int dameCuentaGastos(){ int cuenta = 0; for(int i=0;i < vector.size();i++){ cuenta++; } return cuenta; } }
gracias
|
|
|
En línea
|
|
|
|
Pablo Videla
|
muchas gracias por tu respuesta satu ya hice las correcciones que me dijiste, ahora solo tengo una última duda, a la clase ManejadorGastos le tuve que implementar un método que me agregara un registro de gastos, otro método que al pasarle la posicion me devolviera el gasto qeu se encuentra en esa posicion y otro método para contar cuantos registro tengo, ya lo hice y no me marca errores pero quiero saber si esta hecho correctamente class Gasto{ public float monto; public float iva; public float total; public Fecha mifecha; public Gasto (String concepto, float monto, float iva, float total,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=iva; this.total=total; this.mifecha=mifecha; } public Gasto (String concepto, float monto,Fecha mifecha ){ this.concepto=concepto; this.monto=monto; this.iva=0; this.total=0; this.mifecha=mifecha; } } class ManejadorGastos{ private Gasto gasto=null; private Vector<Gasto> vector; public ManejadorGastos(){ vector = new Vector<Gasto>(); } public void agregarGasto (String concepto, float monto,Fecha fecha ){ gasto = new Gasto(concepto,monto,fecha); vector.add(gasto); } public Gasto consultarGasto(int posicion){ for(posicion=0;posicion<vector.size();posicion++){ gasto = vector.get(posicion); } return gasto; } return gasto.concepto+"\t"+gasto.monto+"\t"+gasto.iva+"\t"+gasto.total+ "\t"+gasto.mifecha; } public int dameCuentaGastos(){ int cuenta = 0; for(int i=0;i < vector.size();i++){ cuenta++; } return cuenta; } }
gracias Primero el darme cuenta gasto no es necesario hacer eso, basta con hacer un public int dameCuentaGastos(){ int cuenta = vector.size(); return cuenta; }
Segundo el consultar esta mal hecho, fijate como estas iterando, no creo que sea necesario hacer eso. esto podría ser una posible solucion no lo he probado. Pero no debe tener errores. Si hay algun problema alguien me corrija . public Gasto consultarGasto(int posicion){ gasto = vector.get(posicion); return gasto; }
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
muchas gracias!! creo que ya me quedo claro los errores que tenía, otra manera de hacer la función consulta podría ser algo como esto?????????: public Gasto consultarGasto(int posicion){ if(0<=posicion && posicion<vector.size()){ gasto = vector.get(posicion); } else{ gasto = null; } return gasto; }
|
|
|
En línea
|
|
|
|
Pablo Videla
|
muchas gracias!! creo que ya me quedo claro los errores que tenía, otra manera de hacer la función consulta podría ser algo como esto?????????: public Gasto consultarGasto(int posicion){ if(0<=posicion && posicion<vector.size()){ gasto = vector.get(posicion); } else{ gasto = null; } return gasto; }
Nop, lo ideal sería asi, por si quieres comprobar si es nulo antes de buscar porque igual puede haber un objeto en la posición 0 public Gasto consultarGasto(int posicion){ if(vector!=null && posicion>=0){ gasto = vector.get(posicion); } else{ System. out. println("No se puede buscar porque no hay elementos en la lista"); } return gasto;
|
|
|
En línea
|
|
|
|
|
|