Foro de elhacker.net

Programación => Java => Mensaje iniciado por: m@o_614 en 13 Junio 2012, 21:39 pm



Título: Vector de objetos
Publicado por: m@o_614 en 13 Junio 2012, 21:39 pm
Saludos

estoy utilizando el API de Java para crear un vector de objetos tipo Gasto
Código
  1. class Gasto{
  2. public String concepto;
  3. public float monto;
  4. public float iva;
  5. public float total;
  6. public Fecha mifecha;
  7.  
  8. public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
  9. this.concepto=concepto;
  10. this.monto=monto;
  11. this.iva=iva;
  12. this.total=total;
  13. this.mifecha=mifecha;
  14. }
  15. }

pero en la clase ManejadorGastos en su método agregar sólo utiliza los atributos concepto,monto y fecha.

Código
  1. class ManejadorGastos{
  2. private Gasto gasto=null;//agregacion
  3. private Vector<Gasto> vector;
  4.  
  5. public ManejadorGastos(){
  6. vector = new Vector<Gasto>();
  7. }
  8.  
  9. public void agregarGasto(String concepto,float monto,Fecha fecha){
  10. Gasto g;
  11. g = new Gasto(concepto,monto,fecha);
  12. vector.add(g);
  13. }
  14. }
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


Título: Re: Vector de objetos
Publicado por: Valkyr en 13 Junio 2012, 23:09 pm
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).


Título: Re: Vector de objetos
Publicado por: m@o_614 en 14 Junio 2012, 01:17 am
Saludos Valkyr

ya le agregue los atributos iva y total pero ahora me sale que iva y total cannot be resolved y no entiendo por qué

Código
  1. class Gasto{
  2. public String concepto;
  3. public float monto;
  4. public float iva;
  5. public float total;
  6. public Fecha mifecha;
  7.  
  8. public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
  9. this.concepto=concepto;
  10. this.monto=monto;
  11. this.iva=iva;
  12. this.total=total;
  13. this.mifecha=mifecha;
  14. }
  15. }
  16.  
  17. class ManejadorGastos{
  18. private Gasto gasto=null;
  19. private Vector<Gasto> vector;
  20.  
  21. public ManejadorGastos(){
  22. vector = new Vector<Gasto>();
  23. }
  24.  
  25. public void agregarGasto(String concepto,float monto,Fecha fecha){
  26. Gasto g;
  27. g = new Gasto(concepto,monto,iva,total,fecha);
  28. vector.add(g);
  29. }
  30.  
en el método agregarGasto solo puede tener los parametros concepto, monto y fecha, así me lo exigieron
gracias


Título: Re: Vector de objetos
Publicado por: satu en 14 Junio 2012, 14:58 pm
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í:

Código
  1. class Gasto{
  2. public String concepto;
  3. public float monto;
  4. public float iva;
  5. public float total;
  6. public Fecha mifecha;
  7.  
  8. public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
  9. this.concepto=concepto;
  10. this.monto=monto;
  11. this.iva=iva;
  12. this.total=total;
  13. this.mifecha=mifecha;
  14. }
  15.  
  16.        public Gasto(String concepto, float monto, Fecha mifecha) {
  17. this.concepto=concepto;
  18. this.monto=monto;
  19.                this.iva=0;
  20. this.total=0;
  21. this.mifecha=mifecha;
  22. }
  23. }
  24.  
  25. class ManejadorGastos{
  26. private Gasto gasto=null;
  27. private Vector<Gasto> vector;
  28.  
  29. public ManejadorGastos(){
  30. vector = new Vector<Gasto>();
  31. }
  32.  
  33. public void agregarGasto(String concepto,float monto,Fecha fecha){
  34. Gasto g;
  35. g = new Gasto(concepto,monto,fecha);
  36. vector.add(g);
  37. }
  38.  

o también puedes tener el método así
Código
  1. public void agregarGasto(String concepto,float monto,Fecha fecha){
  2. Gasto g;
  3.                float iva = 0, total = 0;
  4. g = new Gasto(concepto, iva, total, monto, fecha);
  5. vector.add(g);
  6. }
  7.  

Saludos


Título: Re: Vector de objetos
Publicado por: m@o_614 en 15 Junio 2012, 19:37 pm
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

Código
  1. class Gasto{
  2. public String concepto;
  3. public float monto;
  4. public float iva;
  5. public float total;
  6. public Fecha mifecha;
  7.  
  8. public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
  9. this.concepto=concepto;
  10. this.monto=monto;
  11. this.iva=iva;
  12. this.total=total;
  13. this.mifecha=mifecha;
  14. }
  15.  
  16. public Gasto(String concepto,float monto,Fecha mifecha){
  17. this.concepto=concepto;
  18. this.monto=monto;
  19. this.iva=0;
  20. this.total=0;
  21. this.mifecha=mifecha;
  22. }
  23. }
  24. class ManejadorGastos{
  25. private Gasto gasto=null;
  26. private Vector<Gasto> vector;
  27.  
  28. public ManejadorGastos(){
  29. vector = new Vector<Gasto>();
  30. }
  31.  
  32. public void agregarGasto(String concepto,float monto,Fecha fecha){
  33. gasto = new Gasto(concepto,monto,fecha);
  34. vector.add(gasto);
  35. }
  36.  
  37. public Gasto consultarGasto(int posicion){
  38. for(posicion=0;posicion<vector.size();posicion++){
  39. gasto = vector.get(posicion);
  40. }
  41. return gasto;
  42. }
  43.  
  44. public String dameInfo(){
  45. return gasto.concepto+"\t"+gasto.monto+"\t"+gasto.iva+"\t"+gasto.total+
  46.       "\t"+gasto.mifecha;
  47. }
  48.  
  49. public int dameCuentaGastos(){
  50. int cuenta = 0;
  51. for(int i=0;i < vector.size();i++){
  52. cuenta++;
  53. }
  54. return cuenta;
  55. }
  56. }


gracias


Título: Re: Vector de objetos
Publicado por: Pablo Videla en 15 Junio 2012, 20:48 pm
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

Código
  1. class Gasto{
  2. public String concepto;
  3. public float monto;
  4. public float iva;
  5. public float total;
  6. public Fecha mifecha;
  7.  
  8. public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
  9. this.concepto=concepto;
  10. this.monto=monto;
  11. this.iva=iva;
  12. this.total=total;
  13. this.mifecha=mifecha;
  14. }
  15.  
  16. public Gasto(String concepto,float monto,Fecha mifecha){
  17. this.concepto=concepto;
  18. this.monto=monto;
  19. this.iva=0;
  20. this.total=0;
  21. this.mifecha=mifecha;
  22. }
  23. }
  24. class ManejadorGastos{
  25. private Gasto gasto=null;
  26. private Vector<Gasto> vector;
  27.  
  28. public ManejadorGastos(){
  29. vector = new Vector<Gasto>();
  30. }
  31.  
  32. public void agregarGasto(String concepto,float monto,Fecha fecha){
  33. gasto = new Gasto(concepto,monto,fecha);
  34. vector.add(gasto);
  35. }
  36.  
  37. public Gasto consultarGasto(int posicion){
  38. for(posicion=0;posicion<vector.size();posicion++){
  39. gasto = vector.get(posicion);
  40. }
  41. return gasto;
  42. }
  43.  
  44. public String dameInfo(){
  45. return gasto.concepto+"\t"+gasto.monto+"\t"+gasto.iva+"\t"+gasto.total+
  46.       "\t"+gasto.mifecha;
  47. }
  48.  
  49. public int dameCuentaGastos(){
  50. int cuenta = 0;
  51. for(int i=0;i < vector.size();i++){
  52. cuenta++;
  53. }
  54. return cuenta;
  55. }
  56. }


gracias

Primero el darme cuenta gasto no es necesario hacer eso, basta con hacer un

Código
  1. public int dameCuentaGastos(){
  2. int cuenta = vector.size();
  3.  
  4. return cuenta;
  5. }
  6.  
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 .
Código
  1. public Gasto consultarGasto(int posicion){
  2.  
  3. gasto = vector.get(posicion);
  4.  
  5. return gasto;
  6. }
  7.  


Título: Re: Vector de objetos
Publicado por: m@o_614 en 15 Junio 2012, 22:48 pm
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?????????:

Código
  1. public Gasto consultarGasto(int posicion){
  2. if(0<=posicion && posicion<vector.size()){
  3. gasto = vector.get(posicion);
  4. }
  5. else{
  6. gasto = null;
  7. }
  8. return gasto;
  9. }



Título: Re: Vector de objetos
Publicado por: Pablo Videla en 15 Junio 2012, 23:01 pm
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?????????:

Código
  1. public Gasto consultarGasto(int posicion){
  2. if(0<=posicion && posicion<vector.size()){
  3. gasto = vector.get(posicion);
  4. }
  5. else{
  6. gasto = null;
  7. }
  8. return gasto;
  9. }



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

Código
  1.  
  2. public Gasto consultarGasto(int posicion){
  3. if(vector!=null && posicion>=0){
  4. gasto = vector.get(posicion);
  5. }
  6. else{
  7. System.out.println("No se puede buscar porque no hay elementos en la lista");
  8. }
  9. return gasto;
  10.