Disculpa la omisión. Reenvío el mensaje completo:
Buenas tardes, tratando de resolver el ejercicio encuentro un problema con el iterator, al imprimir solo me imprime el ultimo registro ingresado la cantidad de registros que hay en la lista.
A continuación las 4 clases creadas.
EntradaDeTeclado:
import java.util.Scanner;
public class EntradaDeTeclado {
private String entradaTeclado;
public EntradaDeTeclado() { //Constructor
entradaTeclado = "";
} //Cierre del constructor
public void pedirEntrada() { //Método de la clase
Scanner entradaEscaner = new Scanner(System.in);
entradaTeclado = entradaEscaner.nextLine();
} //Cierre del método pedirEntrada
public String getEntrada() {
return entradaTeclado;
} //Cierre del método getEntrada
public String getPrimeraPalabra() {
for (int i = 0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring(i, i + 1).equals(" ")) {
//IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i + 1);
}
}
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
public int getLongitud() { //Método de la clase
return entradaTeclado.length();
} //Cierre del método getLongitud
public String getLetra(int vPosicionInicial, int vPosicionFinal){
String vLetra =entradaTeclado.substring(vPosicionInicial,vPosicionFinal);
return vLetra;
}
} //Cierre de la clase
segunda clase:
public class CantanteFamoso {
private String nombre, discoxventa;
//private ArrayList DatosCantante
public CantanteFamoso (){
}
public void setAgregrarCantante (String vNombre, String vDisco){
nombre=vNombre;
discoxventa=vDisco;
}
public String getMostrarNombre (){
return nombre;
}
public String getMostarDisco (){
return discoxventa;
}
}
La tercera clase es para crear el array que debe contener los objetos tipo "CantanteFamoso". Tengo dos métodos para imprimir. El primero "getImprimirLista" intento utilizar el "iterator" pero me arroja el error comentado: imprime el ultimo elemento registrado tantas veces como elementos haya registrado. El segundo método: imprime bien los resultados pero sin usar el "iterator" y con un "Do - While".
import java.util.ArrayList;
import java.util.Iterator;
public class ListaCantantesFamosos {
ArrayList<CantanteFamoso> ListaCantante = new ArrayList<>();
CantanteFamoso vCantante = new CantanteFamoso();
public ListaCantantesFamosos(){
}
public void setAgregarCantante (String vNombre, String vDisco){
vCantante.setAgregrarCantante(vNombre, vDisco);
ListaCantante.add(vCantante);
}
public int getTamanoLista (){
return ListaCantante.size();
}
public boolean getValidarPosicion (int vPosicion){
if (vPosicion>= 0 || vPosicion<getTamanoLista()){
return true;
}
else{
return false;
}
}
public void getImprimirLista(){
//Creamos el objeto it de tipo Iterator con String
Iterator<CantanteFamoso> it = ListaCantante.iterator();
String vNombre, vDisco;
//Utilizamos el método hasNext de los objetos tipo Iterator
while (it.hasNext()) {
//Utilizamos el método next de los objetos tipo Iterator
CantanteFamoso cantante = it.next();
System.out.println("Nombre:"+cantante.getMostrarNombre()+" Cancion:"+cantante.getMostarDisco());
}
}
public void getImprimirLista2(){
int i = 0;
System.out.println("Tamano de la lista:"+getTamanoLista());
do {
System.out.println("-->"+ListaCantante.get(i).getMostrarNombre()+ListaCantante.get(i).getMostarDisco());
i+=1;
if (i>3){
break;
}
} while (getTamanoLista()>i);
}
}
La clase de prueba:
public class TestListaCantanteFamoso2 {
public static void main (String [] Args){
EntradaDeTeclado vNombreTeclado = new EntradaDeTeclado();
EntradaDeTeclado vDiscoTeclado = new EntradaDeTeclado();
ListaCantantesFamosos2 vListaCantantes = new ListaCantantesFamosos2();
String vNombre;
do {
System.out.println("");System.out.println("");System.out.println("");
System.out.println("Ingrese Nombre: ((\'N\' para salir)");
vNombreTeclado.pedirEntrada();
//Si no desea continuar, rompemos el ciclo para evitar realizar mas procesos inncesarios
if (vNombreTeclado.getEntrada().equalsIgnoreCase("n")){
break;
}else{
System.out.println("Ingrese el Disco más vendido por favor");
vDiscoTeclado.pedirEntrada();
vListaCantantes.setAgregarCantante(vNombreTeclado.getEntrada(), vDiscoTeclado.getEntrada());
}
//Para imprimir con el iterator
vListaCantantes.getImprimirLista();
//Para imprimir con el Do-While
//vListaCantantes.getImprimirLista2();
System.out.println("===============Fin de la Lista ======================");
System.out.println("");System.out.println("");System.out.println("");
} while (!vNombreTeclado.getEntrada().equalsIgnoreCase("n"));
}
}