Autor Tema: Java bucle while que repite una pregunta al usuario hasta ingresa letra CU00667B  (Leído 3133 veces)

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
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();
       
    }
}
}
« Última modificación: 15 de Agosto 2019, 20:32 por Ogramar »

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:Java desde cero ejercicio (cu00667B)
« Respuesta #1 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 ;)

mary conchis

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 19
    • Ver Perfil
Re:Java desde cero ejercicio (cu00667B)
« Respuesta #2 en: 27 de Noviembre 2018, 07:17 »
muchas gracias la verdad no me habia dado cuenta

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".