Hola que tal
tengo esta clase vendedor:
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:
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!
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:
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.
public static List <Vendedor> ListaVendedores = new ArrayList<Vendedor>();
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!
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
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();
}
}
bien aprendido :D