Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Aeros en 9 Agosto 2010, 07:59 am



Título: Problema de mostrar una lista
Publicado por: Aeros en 9 Agosto 2010, 07:59 am
Hola que tal

tengo esta clase vendedor:

Código
  1. package Alan;
  2. import java.util.*;
  3.  
  4. public class Vendedor {
  5. public List <Vendedor> ListaVendedores = new ArrayList<Vendedor>();
  6. public String Nombre;
  7. public int AutosVend;
  8.  
  9. public Vendedor(String Nombre, int AutosVend)
  10. {
  11. this.Nombre = Nombre;
  12. this.AutosVend = AutosVend;
  13. }
  14.  
  15. public void AgregarVendedor(){
  16. ListaVendedores.add(new Vendedor(Nombre, AutosVend));
  17. }
  18.  
  19. public void  MostrarVendedores(){
  20. Iterator iter = ListaVendedores.iterator();
  21. while (iter.hasNext())
  22.  System.out.println(iter.next());
  23.  
  24. }
  25. }
  26.  

Y lo que quiero es que agregue un objeto Vendedor al ArrayList de tipo Vendedor y despues Mostrarlos:
Código
  1. package Alan;
  2. import java.util.*;
  3. public class main {
  4.  
  5.  
  6. public static void main(String[] args) {
  7. Vendedor[] v = new Vendedor[3] ;
  8. v[0] = new Vendedor("Pepe",3);
  9. v[1] = new Vendedor("Fede", 4);
  10. v[2] = new Vendedor ("Alan",5);
  11. v[0].AgregarVendedor();
  12. v[1].AgregarVendedor();
  13. v[2].AgregarVendedor();
  14. v[0].MostrarVendedores();
  15. v[1].MostrarVendedores();
  16. v[2].MostrarVendedores();
  17. }
  18.  
  19. }
  20.  
  21.  

y me sale esto por consola :(

Código:
Alan.Vendedor@19821f
Alan.Vendedor@addbf1
Alan.Vendedor@42e816


Gracias!


Título: Re: Problema de mostrar una lista
Publicado por: egyware en 9 Agosto 2010, 08:20 am
Hola, estas algo mál enfoncado.

Primero que nada
Cuando tu imprimes el valor de un objeto, no saldra su contenido si no saldra el nombre de la clase y un valor.
Ahora eso se puede arreglar
en la clase Vendedor tu defines , por ejemplo:
Código
  1. public Strint toString(){
  2. return Nombre;
  3. }
  4.  
Que cada vez que imprimas un objeto vendedor, saldra el nombre.

Ahora sobre la lista, debes darte cuenta que esa lista es unica y exclusivamente para 1 vendedor (osea el objeto) esta no se comparte a nadie más. Ahora si tu deseas compartirla debes usar el modificador static que hara tu variable de ambito local a global (para la clase)
Prueba esto.
Código
  1. public static List <Vendedor> ListaVendedores = new ArrayList<Vendedor>();
Código
  1. public static void main(String[] args) {
  2. Vendedor[] v = new Vendedor[3] ;
  3. v[0] = new Vendedor("Pepe",3);
  4. v[1] = new Vendedor("Fede", 4);
  5. v[2] = new Vendedor ("Alan",5);
  6. v[0].AgregarVendedor();
  7. v[1].AgregarVendedor();
  8. v[2].AgregarVendedor();
  9. v[0].MostrarVendedores();
  10. }
Y saldran todos los vendedores :D

Saludos!


Título: Re: Problema de mostrar una lista
Publicado por: Gallu en 9 Agosto 2010, 11:49 am
Hola , me parece que estás  un poco confundido con el concepto POO , no es correcto que la
clase vendedor tenga una lista de vendedores, una clase es la representación de un objeto, además ,
public List <Vendedor> ListaVendedores = new ArrayList<Vendedor>(); solo se llena con un objeto cada vez
y aparte creas el Vector de vendedores , creo que lo correcto es plantearlo de la siguiente manera .

Lo que te contesto egyware es correcto ,  debes sobreescribir el método toString() heredado de Object para
que cuando hagas System.out.println(anOgject) imprima lo que deseas que imprima .

Tampoco es correcto usar palabras reservadas como nombres de variables o clases , en tu caso usaste "main2" como nombre de clase
mirate los code conventions de java , los encuentras en el siguiente enlace

http://www.oracle.com/technetwork/java/codeconv-138413.html

Código
  1. import java.util.*;
  2.  
  3. class Vendedor {
  4. public String nombre;
  5. public int autosVend;
  6.  
  7. public Vendedor(String nombre, int autosVend){
  8. this.nombre = nombre;
  9. this.autosVend = autosVend;
  10. }
  11.  
  12. public String toString(){
  13. return (this.getNombre() + " ha vendido " + this.getAutosVendidos()+ " carros");
  14. }
  15.  
  16. public String getNombre(){
  17. return this.nombre;
  18. }
  19. public int getAutosVendidos(){
  20. return this.autosVend;
  21. }
  22. }
  23.  
  24.  
  25. class ListaVendedores {
  26. private List listaVendedores ;
  27.  
  28. public ListaVendedores (){
  29. listaVendedores = new ArrayList();
  30. }
  31.  
  32. public void addVendedor(Vendedor v){
  33. this.listaVendedores.add(v);
  34. }
  35.  
  36. public void  mostrarVendedores(){
  37. Iterator iter = this.listaVendedores.iterator();
  38. while (iter.hasNext())
  39.  System.out.println(iter.next());
  40.  
  41. }
  42. }
  43.  
  44.  
  45. class Prueba2 {
  46.  
  47. public static void main(String[] args) {
  48. ListaVendedores listaV = new ListaVendedores();
  49. listaV.addVendedor(new Vendedor("Pepe",3));
  50. listaV.addVendedor(new Vendedor("Fede", 4));
  51. listaV.addVendedor(new Vendedor ("Alan",5));
  52.  
  53. //ahora mostramos los vendedores que tenemos en la lista
  54. listaV.mostrarVendedores();
  55. }
  56.  
  57. }
  58.  


Título: Re: Problema de mostrar una lista
Publicado por: Aeros en 10 Agosto 2010, 00:09 am
bien aprendido :D