Autor Tema: El for extendido o bucles for each en Java. Ventajas e inconvenientes.(CU00666B)  (Leído 2465 veces)

micaelasol

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Aquí va una propuesta de solución para el ejercicio CU00666B del curso de programación Java para principiantes de aprenderaprogramar:

Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.

Código: [Seleccionar]
import java.util.ArrayList;

public class ListaCantantesFamosos1
{
    private ArrayList <String> listaFamosos;
    private String nombre;
   
    public ListaCantantesFamosos1 () {
        listaFamosos = new ArrayList <String>();
        listaFamosos.add("Ariana Grande");
        listaFamosos.add ("Dua Lipa");
        listaFamosos.add("Ed Sheeran");
    }
   
    public void addNombre(String nombre){
        listaFamosos.add(nombre);
    }
   
    public ArrayList <String> getListaFamosos(){
        return listaFamosos;
    }
   
    public int getTamaño(){
        return listaFamosos.size();
    }
       
    public void mostrarPorPantallaLista(){
        int i= 0;
        for (String nombre : listaFamosos){
            System.out.println ("\n Cantante número " + (i+1) + ": " + getListaFamosos().get(i));
            i++;
        }
    }
   
}

Código: [Seleccionar]
import java.util.Scanner;

public class TestListaCantantesFamosos1
{
    public static void main (String [] args){
        Scanner entradaEscaner = new Scanner (System.in);
        //NombreDeLaClase nombreDelObjeto = new NombreDeLaClase();
        ListaCantantesFamosos1 listaCantantes = new ListaCantantesFamosos1();
       
        System.out.println ("Así va la lista hasta ahora: ");
        listaCantantes.mostrarPorPantallaLista();
       
        System.out.println ("");
       
        System.out.println("Ahora ingrese un nuevo cantante: ");
        String entrada1 = entradaEscaner.nextLine();
        listaCantantes.addNombre(entrada1);
        //\n
        System.out.println ("Aqui va la lista actualizada: ");
        listaCantantes.mostrarPorPantallaLista();
       
        System.out.println("");
       
        while (!"No".equals(entrada1)){
            System.out.println("¿Quiere agregar un nuevo cantante?");
            entrada1 = entradaEscaner.nextLine();
           
            if (entrada1.equals("Si")){
                System.out.println ("Nombre: ");
                entrada1 = entradaEscaner.nextLine();
                listaCantantes.addNombre(entrada1);
                listaCantantes.mostrarPorPantallaLista();
            }else {entrada1 = "No";}
        }
        System.out.println ("Ha finalizado el programa");
           
    }
}

Muchas gracias y recibo consejos!
« Última modificación: 18 de Marzo 2022, 20:51 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, respecto a este ejercicio indicar que está bien resuelto y cumple con los requerimientos planteados. Como observaciones:

-->  En el for extendido has introducido un índice. Si se usa un for de este tipo normalmente no se usan índices numéricos. En caso de usar índices numéricos es preferible usar un for tradicional, al menos esto es lo más habitual. Sin embargo, no hay ninguna regla que prohíba hacerlo como lo has hecho.

--> Para continuar añadiendo cantantes únicamente nos admite "Si" pero no admite "SI" ni "Sí" ni "S" etc. Esto podría haberse mejorado un poco, pero esto tampoco era algo importante en este ejercicio.

--> En los casos en que debe ejecutarse al menos una vez un bucle, puede ser interesante usar un do while en lugar de un while. Puede verse un ejemplo de esto en https://aprenderaprogramar.com/foros/index.php?topic=2888.0

Saludos.

 

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".