Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: mary conchis en 27 de Septiembre 2018, 22:20
-
Ejercicio CU00667B del tutorial de fundamentos de programación orientada a objetos. Creo que tiene algunos detalles no correctos, pero es que se me dificultó un poco.
public class CantanteFamoso
{
String nombre;
String discoMasVendido;
public CantanteFamoso(){
nombre="desconocido";
discoMasVendido="desconocido";
}
public void setNombre(String valorNombre){
nombre=valorNombre; }
public void setDiscoMasVendido(String valorDiscoMasVendido){
discoMasVendido=valorDiscoMasVendido;}
public String getNombre(){
return nombre;}
public String getDiscoMasVendido(){
return discoMasVendido;}
}
import java.util.ArrayList;
public class ListaDeCantantesFamosos
{
private ArrayList<CantanteFamoso> listaCantantesFamosos;
public ListaDeCantantesFamosos()
{
listaCantantesFamosos=new ArrayList<CantanteFamoso>();
}
public void agregarCantante(String nuevoNombre,String nuevoDisco){
CantanteFamoso nuevoCantante= new CantanteFamoso();
nuevoCantante.setNombre(nuevoNombre);
nuevoCantante.setDiscoMasVendido(nuevoDisco);
listaCantantesFamosos.add(nuevoCantante);
}
public ArrayList<CantanteFamoso>getLista(){
return listaCantantesFamosos;}
}
import java.util.Iterator;
import java.util.Scanner;
public class TestListaCantantesFamosos
{
public static void main (String [] args)
{
Scanner entradaEscaner = new Scanner (System.in);
String respuesta="si";
String nombreN="";
String discoN="";
boolean original=true;
ListaDeCantantesFamosos lista= new ListaDeCantantesFamosos();
lista.agregarCantante("Madonna", "All i want is you");
lista.agregarCantante("Jorge Negrete", "Jalisco");
Iterator <CantanteFamoso> it;
CantanteFamoso cantanteActual=null;
while(respuesta.equals("si")){
it= lista.getLista().iterator();
if(original==true){ System.out.println("La lista inicial es: "); original=false;}
else{System.out.println("la lista actualizada es: ");}
while (it.hasNext()== true)
{
cantanteActual=it.next();
System.out.print("Cantante: " + cantanteActual.getNombre());
System.out.println(" Disco mas vendido: " + cantanteActual.getDiscoMasVendido());
}
System.out.println("introduzca otro cantante");
System.out.println("nombre");
nombreN=entradaEscaner.nextLine();
System.out.println("disco mas vendido");
discoN=entradaEscaner.nextLine();
lista.agregarCantante(nombreN, discoN);
System.out.println("¿desea introducir otro cantante (s/n)?");
respuesta=entradaEscaner.nextLine();
}
}
}
-
Hola Mari conchis.
El ejercicio esta bien resuelto pero tienes un pequeño fallo en el While y en la pregunta para seguir dentro del bucle.
te comento:
String respuesta="si";
Esto esta bien.
while(respuesta.equals("si")){
Esto también esta bien.
System.out.println("¿desea introducir otro cantante (s/n)?");
respuesta=entradaEscaner.nextLine();
Esto induce a error a la hora de seguir introduciendo cantantes ya que en la pregunta te dice s/n para continuar y si le das s finaliza.
Hay que ser coherentes en el código y en las entradas de teclado del usuario ya que nosotros codificando y haciendo pruebas sabemos lo que ponemos pero el usuario no ve el funcionamiento interno del programa.
Tenemos que ir con cuidado en estos despistes.
Seria cambiar la pregunta por: "desea introducir otro cantante (si/no)
o modificar el while :while(respuesta.equals("s") y la variable :String respuesta="s";
Todo correcto menos ese pequeño despiste ¿ok?.
Un Saludo ;)
-
muchas gracias la verdad no me habia dado cuenta