Autor Tema: Ejercicio CU00666B. Ejemplo for extendido o bucles for each en Java.  (Leído 3388 veces)

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Mi versión del Ejercicio propuesto en la Entrega Nº66. Ejercicio CU00666B.

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

public class ListaCantantesFamosos{
    //Declaración de campos de instancia
    private ArrayList<String> listaCantantes;
   
    public ListaCantantesFamosos(){ // Constructor_1 de clase
        listaCantantes = new ArrayList<String>();
    }
   
        public ListaCantantesFamosos(String nombre1, String nombre2, String nombre3){ // Constructor_2 de clase
        listaCantantes = new ArrayList<String>();
        agregarCantante(nombre1);
        agregarCantante(nombre2);
        agregarCantante(nombre3);
    }
   
    public void agregarCantante(String nombre){
        listaCantantes.add(nombre);
    }
   
    public void recorrerListaCantante(){
    int i=1;
    for(String nombre : listaCantantes){
            System.out.println(i+".- "+nombre);
            i++;
        }
    }
   
} // Fin de la clase

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

public class GestionadorEntradasTeclado{
    //Declaracion de campos de instancia de la clase
   
    public GestionadorEntradasTeclado(){ // Constructor
    }
   
     static String leer(){
        Scanner scannerTeclado = new Scanner (System.in);
        String valorTeclado = scannerTeclado.nextLine();
        return valorTeclado;
    }
     
} // Fin de la clase

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

public class Test{
    //Declaración de campos de instancia.
   
    public static void main (String[] args){
        ListaCantantesFamosos CantantesItalianos;
        CantantesItalianos = new ListaCantantesFamosos("Eros Ramazzotti","Adriano Celentano","Lucio Dalla");
       
        System.out.println("Cantantes Italianos Famosos incluídos en la Lista:");
        CantantesItalianos.recorrerListaCantante();

       
    do{
        System.out.println("");
        System.out.println("Agregue un nuevo cantante italiano a la Lista:");
        CantantesItalianos.agregarCantante(GestionadorEntradasTeclado.leer());
       
        System.out.println("");
        System.out.println("Cantantes Italianos Famosos incluídos en la Lista:");
        CantantesItalianos.recorrerListaCantante();
       
        System.out.println("");
        System.out.println("¿Desea agregar un nuevo cantante a la Lista?");
        System.out.println("(Presione letra \"Y\" para agregar, cualquier otra tecla para Salir)");
    }while (GestionadorEntradasTeclado.leer().equalsIgnoreCase("y"));
   
    System.out.println("");
    System.out.println("Fin del programa. Muchas gracias");       
       
    } // fin main
   
} // fin clase

Saludos!
« Última modificación: 13 de Marzo 2015, 08:56 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00666B. El for extendido o bucles for each en Java.
« Respuesta #1 en: 12 de Marzo 2015, 23:48 »
Hola Raga

Tu ejercicio está muy bien. OK.

Quiero aportar un detalle para tenerlo en cuenta en adelante.
Según las convenciones de nombres en Java, los objetos/instancias de clase empezarán con minúscula, como las variables, atributos y métodos para distinguirlos de las clases que empiezan con mayúscula.

La siguiente declaración en la clase Test:
    ListaCantantesFamosos CantantesItalianos;
debería ser
    ListaCantantesFamosos cantantesItalianos;

Y por último, aunque el código es operativo al 100%
En la clase ListaCantantesFamosos creas un segundo constructor que hace lo mismo que el primero (inicializar el atributo listaCantantes) y además añade 3 cantantes.
Si las líneas para añadir los 3 cantantes las hubieras puesto en el main, el programa funcionaría igual.
Además, si quieres empezar el programa con un número distinto de cantantes, con tu código, tendrás que modificar ese constructor cada vez que haya cambios.
En cambio si no usas ese constructor, estos cambios solo los has de hacer en el main, y la clase ListaCantantesFamosos sin tocarla te sirve para cualquier número de cantantes.

Saludos

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Ejercicio CU00666B. Ejemplo for extendido o bucles for each en Java.
« Respuesta #2 en: 13 de Marzo 2015, 16:56 »
Muy agradecido por tus sugerencias toni_apr.
Cometí el error de la mayúscula inicial al momento de instanciar el objeto (debo poner más atención al revisar la sintaxis).
Con respecto al Constructor_2, fue un error mío de interpretación de la consigna del ejercicio me parece. Totalmente de acuerdo contigo: el cambio que me recomiendas es mucho mas modular que lo que planteo yo con el Constructor_2. Creo que con el Constructor_1 basta, y luego con llamada a métodos desde la función main satisfago las necesidades del momento (como bien lo dices tu). De esa manera la clase ListaCantantesFamosos queda lista en un paquetito cerrado y bien modular para futuras necesidades.

Interpreté que cuando el enunciado del Ejercicio decía:

Citar
EJERCICIO
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos.

lo que estaba pidiendo era que al momento de la instancia en el Constructor se agregaran allí los 3 nombres de los cantantes.

Insisto, error mío de interpretación, un error tan importante como mal codificar pienso, ya que el primer paso a la hora de programar es interpretar correctamente el problema planteado para luego ir con nuestro arte.

Saludos.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicio CU00666B. Ejemplo for extendido o bucles for each en Java.
« Respuesta #3 en: 13 de Marzo 2015, 20:24 »
Hola Raga

Tu código hace el trabajo de una forma determinada. No puede decirse que sea un error.
Lo que si has captado, es que la clase se convierte en
Citar
un paquetito cerrado y bien modular para futuras necesidades.

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