Problema de mostrar una lista

Iniciado por Aeros, 9 Agosto 2010, 07:59 AM

0 Miembros y 1 Visitante están viendo este tema.

Aeros

Hola que tal

tengo esta clase vendedor:

Código (java) [Seleccionar]

package Alan;
import java.util.*;

public class Vendedor {
public List <Vendedor> ListaVendedores = new ArrayList<Vendedor>();
public String Nombre;
public int AutosVend;

public Vendedor(String Nombre, int AutosVend)
{
this.Nombre = Nombre;
this.AutosVend = AutosVend;
}

public void AgregarVendedor(){
ListaVendedores.add(new Vendedor(Nombre, AutosVend));
}

public void  MostrarVendedores(){
Iterator iter = ListaVendedores.iterator();
while (iter.hasNext())
  System.out.println(iter.next());

}
}


Y lo que quiero es que agregue un objeto Vendedor al ArrayList de tipo Vendedor y despues Mostrarlos:
Código (java) [Seleccionar]

package Alan;
import java.util.*;
public class main {


public static void main(String[] args) {
Vendedor[] v = new Vendedor[3] ;
v[0] = new Vendedor("Pepe",3);
v[1] = new Vendedor("Fede", 4);
v[2] = new Vendedor ("Alan",5);
v[0].AgregarVendedor();
v[1].AgregarVendedor();
v[2].AgregarVendedor();
v[0].MostrarVendedores();
v[1].MostrarVendedores();
v[2].MostrarVendedores();
}

}



y me sale esto por consola :(

Alan.Vendedor@19821f
Alan.Vendedor@addbf1
Alan.Vendedor@42e816



Gracias!

egyware

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 (java) [Seleccionar]

public Strint toString(){
return Nombre;
}

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 (java) [Seleccionar]
public static List <Vendedor> ListaVendedores = new ArrayList<Vendedor>();
Código (java) [Seleccionar]
public static void main(String[] args) {
Vendedor[] v = new Vendedor[3] ;
v[0] = new Vendedor("Pepe",3);
v[1] = new Vendedor("Fede", 4);
v[2] = new Vendedor ("Alan",5);
v[0].AgregarVendedor();
v[1].AgregarVendedor();
v[2].AgregarVendedor();
v[0].MostrarVendedores();
}

Y saldran todos los vendedores :D

Saludos!

Gallu

#2
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 (java) [Seleccionar]

import java.util.*;

class Vendedor {
public String nombre;
public int autosVend;

public Vendedor(String nombre, int autosVend){
this.nombre = nombre;
this.autosVend = autosVend;
}

public String toString(){
return (this.getNombre() + " ha vendido " + this.getAutosVendidos()+ " carros");
}

public String getNombre(){
return this.nombre;
}
public int getAutosVendidos(){
return this.autosVend;
}
}


class ListaVendedores {
private List listaVendedores ;

public ListaVendedores (){
listaVendedores = new ArrayList();
}

public void addVendedor(Vendedor v){
this.listaVendedores.add(v);
}

public void  mostrarVendedores(){
Iterator iter = this.listaVendedores.iterator();
while (iter.hasNext())
  System.out.println(iter.next());

}
}


class Prueba2 {

public static void main(String[] args) {
ListaVendedores listaV = new ListaVendedores();
listaV.addVendedor(new Vendedor("Pepe",3));
listaV.addVendedor(new Vendedor("Fede", 4));
listaV.addVendedor(new Vendedor ("Alan",5));

//ahora mostramos los vendedores que tenemos en la lista
listaV.mostrarVendedores();
}

}
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Aeros