Ejercicio CU00667B del curso de Java desde cero con BlueJ.
Bueno, creo que el ejercicio hace lo que se pide, pero muy complicado hacer la iteración de cantantes famosos y disco con mas ventas. Por favor como puedo mejorar el siguiente código?
package cantantesfamosos;
/*La clase con el método main es la responsable de dirigir el flujo del programa y en este caso, responsable
* de realizar tareas con los valores de lo escrito por el usuario y de mostrar mensajes en pantalla*/
//Importamos las clases necesarias
public class TestListaCantantesFamosos{
public static void main(String[] args){
ListaCantantesFamosos lista1 = new ListaCantantesFamosos(); //Creo el objeto
/*Con estos objetos, pediremos todas las entradas de datos al usuario (reutilizacion de código)*/
EntradaDeTeclado entradaDeTeclado = new EntradaDeTeclado();
ListaDiscoConMasVentas lista2 = new ListaDiscoConMasVentas();
//Declaramos cuatro variables tipo String que contendrán cada una un valor escrito por el usuario
//Si son de un mismo tipo, podemos declararlas en una sola linea, separadas por comas
String entrada1, entrada2, entrada3,entrada4;
System.out.println("Empecemos con el programa\n-------------------------\nIntroduce "
+ "el nombre de 2 cantantes famosos...\n\nNombre del Cantante 1:");
entrada1 = entradaDeTeclado.pedirEntrada();
System.out.println("El disco Con Mas Ventas ");
entrada3 = entradaDeTeclado.pedirEntrada();
System.out.println("Nombre del Cantante 2:");
entrada2 = entradaDeTeclado.pedirEntrada();
System.out.println("El disco Con Mas Ventas ");
entrada4 = entradaDeTeclado.pedirEntrada();
//agrego los nombres solicitados
lista1.getListadenombres().add(entrada1);
lista1.getListadenombres().add(entrada2);
lista2.getlistadiscoConMasVentas().add(entrada3);
lista2.getlistadiscoConMasVentas().add(entrada4);
boolean si, no = false;
while(no == false){
si = false; no = false;
System.out.println("¿Desea introducir los datos de otro cantante (s/n)? ");
entrada1 = entradaDeTeclado.pedirEntrada();
if(entrada1.equalsIgnoreCase("Si") == true){si = true;
System.out.println("Por favor introduzca los datos de otro cantante:");
entrada1 = entradaDeTeclado.pedirEntrada();
lista1.getListadenombres().add(entrada1);
System.out.println("Ingrese el disco Con Mas Ventas ");
entrada2 = entradaDeTeclado.pedirEntrada();
lista2.getlistadiscoConMasVentas().add(entrada2);
System.out.println("\nMuchas Gracias...");
System.out.println("\nEl listado de los Cantantes Famosos es el siguiente:\n");
int i = 0; /*Usaremos esta variable como un contador en el for each (otra opción seria usar un bucle
for normal)*/
for(String cantante: lista1.getListadenombres()){ //Usamos un for each para recorrer la lista de cantantes
i++;
System.out.println("Cantante " + i + ": " + cantante); //Listo todos los nombres
}
System.out.println("\nEl listado de los discos mas vendidos es el siguiente:\n");
int j= 0; /*Usaremos esta variable como un contador en el for each (otra opción seria usar un bucle
for normal)*/
for(String disco: lista2.getlistadiscoConMasVentas()){ //Usamos un for each para recorrer la lista de cantantes
j++;
System.out.println("Disco " + j + ": " + disco);} //Listo todos los nombres de los discos Con Mas VeNTAS
}
else if(entrada1.equalsIgnoreCase("No") == true){no = true;}
break;
}
}
}
package cantantesfamosos;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author ITCO1724
*/
public class ListaDiscoConMasVentas {
//Declaracion de variables
public List<String> listadiscoConMasVentas = new ArrayList<String>();
/*Array de objetos string que va a guardar los nombres*/
//fin declaracion variables
//Constructor
public ListaDiscoConMasVentas(){
//Agrego 3 nombres por defecto
listadiscoConMasVentas.add("All I want is you");
listadiscoConMasVentas.add("Jalisco");
listadiscoConMasVentas.add("Thriller");
} //cierre constructor
public List<String> getlistadiscoConMasVentas() { return listadiscoConMasVentas; }
public void setlistadiscoConMasVentas(List<String> listadiscoConMasVentas) { this.listadiscoConMasVentas = listadiscoConMasVentas; }
}
package cantantesfamosos;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
//import java.util.Iterator;
/*Para un buen programador, los métodos get y set de una variable de clase, no son opcionales
* Siempre han de ser declarados aun cuando se crean innecesarios*/
public class ListaCantantesFamosos{
public List<String> listadenombres;
//Constructor
public ListaCantantesFamosos(){
this.listadenombres = new ArrayList<>();
//Agrego 3 nombres por defecto
listadenombres.add("Madonna");
listadenombres.add("Jorge Negrete");
listadenombres.add("Michael Jackson");
} //cierre constructor
public List<String> getListadenombres() { return listadenombres; }
public void setListadenombres(List<String> listadenombres) { this.listadenombres = listadenombres; }
public void verlistadenombres(){
Iterator<String> it = listadenombres.iterator();
}
}
package cantantesfamosos;
import java.util.Scanner;
/*Una clase debe de hacer lo que su nombre dice que es o que hace y no nada mas.*/
public class EntradaDeTeclado{
private String entradaDeTeclado;
//Constructor por defecto
public EntradaDeTeclado(){
/*Este constructor puede ser invocado aun si no estuviese declarado en esta clase, siempre y cuando no exista ningún otro constructor (con argumento/s) declarado en esta clase, se considera buena practica el declararlo */
} //cierre constructor por defecto
/*Este método retorna un String como resultado de lo que el usuario escriba por teclado*/
public String pedirEntrada(){ //metodo de clase
Scanner entradaScanner = new Scanner(System.in);
String entradaTeclado;
entradaTeclado = entradaScanner.nextLine();
return entradaTeclado;
} //cierre pedir entrada
public String getEntradaDeTeclado () {
return entradaDeTeclado; } //Cierre del método getEntrada
gRACIAS