Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 15 de Junio 2015, 13:24
-
Tipo Iterator api Java. Ejemplo. Error java.util.Concurrent ModificationException. Resumen bucles.
Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de cantantes como se desee. Para ello usa un bucle while que dé opción a elegir al usuario).
CLASE CANTANTE FAMOSO
package aprender;
public class CantantesFamosos{
String nombre;
String discoConMasVentas;
public CantantesFamosos(String nombre, String discoConMasVentas){
this.nombre = nombre;
this.discoConMasVentas = discoConMasVentas;
}
public void setNombre (String añadeNombre){
nombre = añadeNombre;
}
public void setDiscoConMasVentas(String añadeDisco){
discoConMasVentas = añadeDisco;
}
public String getNombre (){
return nombre;
}
public String getDiscoConMasVentas (){
return discoConMasVentas;
}
}
CLASE LISTA CANTANTES CON ITERADOR
package aprender;
import java.util.ArrayList;
import java.util.Iterator;
public class ListaCantantes {
//private Object can;
// private CantantesFamosos cantante;
public ArrayList <CantantesFamosos> listaCantantesFamosos;
public ListaCantantes(){
//String = cantante.to
//cantante = new CantantesFamosos();
listaCantantesFamosos = new ArrayList<CantantesFamosos>();
}
public void addNombre(CantantesFamosos cantante){
//cantante = new CantantesFamosos();
listaCantantesFamosos.add(cantante);
}
public void listar(){
CantantesFamosos cantante;
int i=0;
Iterator<CantantesFamosos>it = listaCantantesFamosos.iterator();
while (it.hasNext()==true){
cantante = it.next();
System.out.println("Cantante "+(i+1)+"- "+cantante.getNombre()+"--> Disco con mas ventas: "+cantante.getDiscoConMasVentas());
i++;
}
}
}
CLASE TEST CON MAIN
package aprender;
import java.util.Scanner;
public class TestCantantes {
private static Scanner resp;
public static void main (String [] args){
resp = new Scanner(System.in);
String dato, dato2,dato3,dato4;
boolean a, b;
CantantesFamosos cantante2 = new CantantesFamosos("Melendi", "Curiosa la cara de tu padre");
CantantesFamosos cantante1 = new CantantesFamosos("Eminem", "Recovery");
ListaCantantes lista1 = new ListaCantantes();
lista1.addNombre(cantante1);
lista1.addNombre(cantante2);
System.out.println("Empezamos el programa para introducir cantantes y sus respectivos discos con mas ventas. \nCantantes ya introducidos:");
lista1.listar();
System.out.println("Introduce un cantante(a continuación se te pedirá que introduzcas su disco)");
dato= resp.nextLine();
System.out.println("Introduce su disco más vendido");
dato2 = resp.nextLine();
CantantesFamosos cantante3 = new CantantesFamosos (dato, dato2);
lista1.addNombre(cantante3);
lista1.listar();
do{
a= false;
b =false;
while (b ==false){
System.out.println("¿Desea introducir otro cantante?(si/no)");
dato = resp.nextLine();
if(dato.equalsIgnoreCase("si")){
a = false;
b = true;
System.out.println("Introduce un cantante");
dato3=resp.nextLine();
System.out.println("Intruduce su disco más vendido");
dato4=resp.nextLine();
CantantesFamosos cantante4 = new CantantesFamosos(dato3,dato4);
lista1.addNombre(cantante4);
lista1.listar();
}else if(dato.equalsIgnoreCase("no")) {
a = true ;
b=true;
System.out.println("Finalizando el programa... \nFin, gracias por usarlo.");
}else{
System.out.println("Introduzca si/no");
}
}}while (a == false);
}
}
-
Estaba probando tu código y funciona bien. No encontré errores. Hay muchas formas de hacerlo, todo tenemos formas diferente en la lógica.