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

Título: Java bucle while que repite una pregunta al usuario hasta ingresa letra CU00667B
Publicado 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.

Código: [Seleccionar]
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;}
    }

Código: [Seleccionar]
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;}
}

Código: [Seleccionar]
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();
       
    }
}
}
Título: Re:Java desde cero ejercicio (cu00667B)
Publicado por: paramonso en 20 de Noviembre 2018, 13:14
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:
Citar
String respuesta="si";
Esto esta bien.
Citar
while(respuesta.equals("si")){
Esto también esta bien.

Citar
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 ;)
Título: Re:Java desde cero ejercicio (cu00667B)
Publicado por: mary conchis en 27 de Noviembre 2018, 07:17
muchas gracias la verdad no me habia dado cuenta