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