Test Foro de elhacker.net SMF 2.1

Programación => Programación General => 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 (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!
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 (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!
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 (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();
}

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