Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: barriway en 09 de Julio 2015, 20:03
-
Aquí os dejo una posible solución del ejercicio de la clase iterador CU00667B
import java.util.Scanner;
public class EntradaTeclado{
private String entrada;
Scanner scaner;
public EntradaTeclado(){
entrada="";
scaner = new Scanner(System.in);
}
public String getEntrada(){
return entrada;
}
public void setEntrada(){
entrada = scaner.nextLine();
}
}
public class CantanteFamoso{
private String nombre;
private String discoDeMasVentas;
public CantanteFamoso(){
nombre="";
discoDeMasVentas="";
}
public CantanteFamoso(String nombre,String discoDeMasVentas){
this.nombre=nombre;
this.discoDeMasVentas=discoDeMasVentas;
}
public CantanteFamoso(CantanteFamoso cantanteFamoso){
this.nombre=cantanteFamoso.getNombre();
this.discoDeMasVentas=cantanteFamoso.getDiscoMasVentas();
}
public String getNombre(){
return nombre;
}
public String getDiscoMasVentas(){
return discoDeMasVentas;
}
public void setNombre(String nombre){
this.nombre=nombre;
}
public void setDiscoMasVentas(String discoDeMasVentas){
this.discoDeMasVentas=discoDeMasVentas;
}
public void visualizarCantante(){
System.out.println("Nombre : "+nombre+", "+"Disco de mas vendido : "+discoDeMasVentas);
}
}
import java.util.ArrayList;
public class ListaCantantesFamosos{
private ArrayList<CantanteFamoso> listaCantantes;
public ListaCantantesFamosos(){
listaCantantes = new ArrayList<CantanteFamoso>();
}
public ArrayList<CantanteFamoso> getLista(){
return listaCantantes;
}
public CantanteFamoso getCantante(int posicion){
if(posicion>=0 && posicion<listaCantantes.size()){
return listaCantantes.get(posicion);
}else{
return null;
}
}
public void addCantante(CantanteFamoso cantanteFamoso){
listaCantantes.add(cantanteFamoso);
}
public void removeCantante(int posicion){
if(posicion>=0 && posicion<listaCantantes.size()){
listaCantantes.remove(posicion);
}
}
public int getTamaño(){
return listaCantantes.size();
}
}
import java.util.Iterator;
public class TestIterador{
public static void main (String Arg[]){
ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
listaCantantes.addCantante(new CantanteFamoso("Primer Cantante","Primer Disco"));
listaCantantes.addCantante(new CantanteFamoso("Segundo Cantante","Segundo Disco"));
System.out.println("Listado de cantantes famosos");
Iterator<CantanteFamoso> iteradorCantante = listaCantantes.getLista().iterator();
while(iteradorCantante.hasNext()){
iteradorCantante.next().visualizarCantante();
}
EntradaTeclado entradaTeclado=new EntradaTeclado();
do{
CantanteFamoso nuevoCantante = new CantanteFamoso();
System.out.print("Dame el nombre de otro cantante famoso : ");entradaTeclado.setEntrada();
nuevoCantante.setNombre(entradaTeclado.getEntrada());
System.out.print("Dame el nombre de su disco mas vendido : ");entradaTeclado.setEntrada();
nuevoCantante.setDiscoMasVentas(entradaTeclado.getEntrada());
listaCantantes.addCantante(nuevoCantante);
System.out.println("Listado de cantantes famosos");
iteradorCantante = listaCantantes.getLista().iterator();
while(iteradorCantante.hasNext()){
iteradorCantante.next().visualizarCantante();
}
System.out.print("¿Desea introducir otro cantante?(S/N) : ");entradaTeclado.setEntrada();
}while(entradaTeclado.getEntrada().equals("S"));
}
}
Un saludo.
-
Hola barriway, tu código es correcto y está bien planteado, cumple con lo que se pedía en el ejercicio.
No es necesario pues no se pedía, pero para que lo tengas en cuenta si en vez de usar while(entradaTeclado.getEntrada().equals("S")); usas while(entradaTeclado.getEntrada().equalsIgnoreCase("S")); te admitirá como equivalentes la s y la S (es decir, admitirá tanto mayúsculas como minúsculuas).
Salu2
-
Hola:
Por mi parte haría una observación que sería la siguiente:
Líneas como la siguiente, son válidas ya que el complidor no señala errores
nombre="";
pero lo correcto sería declarar el objeto con su ámbito y con su tipo.
Para este caso lo apropiado sería:
private String nombre="";
No quiero dejar de destacar la buena organización de cada una de las clases, y sobre todo el código de la clase main. Veo que utilizas objetos anónimos correctamente (lo cual se verá más adelante en el curso).
Excelente uso de los métodos del objeto tipo Iterator.
Saludos.