Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Cabanota en 31 de Octubre 2014, 22:43

Título: Ejercicio con solución Ejemplo clase ArrayList api Java parametrizada CU00665B#
Publicado por: Cabanota en 31 de Octubre 2014, 22:43
Esta fue la solución que le di al ejercicio CU00665B del curso de programación básico en Java:

Clase con sus respectivos métodos.

Código: [Seleccionar]

import java.util.*;

public class ListaCantantesFamosos{
    private ArrayList<String> nombreCantantes;
   
    public ListaCantantesFamosos(){
        nombreCantantes = new ArrayList<String>();
        nombreCantantes.add("Joe Arroyo");
        nombreCantantes.add("Hector Lavoe");
        nombreCantantes.add("Grupo niche");
    }
   
    public ArrayList<String> getNombreCantantes(){
        return nombreCantantes;
    }
   
    public int getTamaño(){
        return nombreCantantes.size();
    }
   
    public void addNombre(String nombre){
        nombreCantantes.add(nombre);
    }
}

Clase con el método main.
Código: [Seleccionar]
import java.util.*;

public class TestListaCantantesFamosos{
   
    public TestListaCantantesFamosos(){
    }
   
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        ListaCantantesFamosos list = new ListaCantantesFamosos();
       
        System.out.print("Ingrese el primer Cantante famoso: ");
        String nom1 = sc.nextLine();
        list.addNombre(nom1);
       
        System.out.print("Ingrese el segundo Cantante famoso: ");
        String nom2 = sc.nextLine();
        list.addNombre(nom2);
       
        System.out.println(); //Lo puse para dejar un espacio.
       
        System.out.println("Contenido de la lista en fila: " + list.getNombreCantantes());
       
        System.out.println(); //Lo puse para dejar un espacio.
       
        System.out.println("Contenido de la lista en columna: ");
        for(int i = 0; i < list.getTamaño();i++){
             System.out.println(list.getNombreCantantes().get(i));
        }
    }
}

Si encuentran mejoras que puedo hacer en el código o si no entendí bien el enunciado del ejercicio, estaría muy agradecidos con ustedes por leerlas.

De antemano, muchas gracias.

Saludos.
Título: Re:Solución ejercicio: CU00665B - Clase ArrayList del api Java.
Publicado por: Jorge lopez en 02 de Noviembre 2014, 04:55
 Tu código cumple con lo requerido, pero se puede mejorar.

Clase CantantesFamosos: Todo correcto

Clase TesCantantesFamosos: En esta clase lo que mas resalta es la duplicidad de código. Usar lineas de código idénticas (duplicar código) es algo que todo buen programador debe de evitar, una buena alternativa para evitar duplicar código, es ligar el código el cual nos vemos en la necesidad de duplicar a un método, así en ves de por ejemplo tener este fragmento de tu código:
Código: [Seleccionar]
System.out.print("Ingrese el primer Cantante famoso: ");
        String nom1 = sc.nextLine();
repetido varias veces a lo largo del código de la clase, pues usaríamos un método (o bucle como es en este caso) para evitar la duplicidad. Ahora esto parece insignificante porque solo repites este código dos veces, pero que harías si tuvieras que introducir 100 nombres de cantantes famosos?

A continuación dejo el código de la clase TestCantantesFamosos, ligeramente editada y comentada en los puntos editados:

clase TestCantantesFamosos
Código: [Seleccionar]
import java.util.Scanner;
/**
 * Write a description of class TestListaCantantesFamosos here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class TestListaCantantesFamosos{
   
    public TestListaCantantesFamosos(){
    }
   
    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      ListaCantantesFamosos list = new ListaCantantesFamosos();
      System.out.print("Esta lista contiene " + list.getTamaño() + " nombres de cantantes famosos, por favor escribe 2 nombres mas para completar el top 5 de la semana.\n\n"); 
      for(int i = 0; i < 2; i++)
      {
          System.out.print("Ingrese el cantante famoso numero " + (list.getTamaño() + 1 )+ ": ");
          list.addNombre(sc.nextLine());
      } /*Con este bucle for, reducimos la cantidad de codigo y evitamos la duplicidad de codigo que tenias anteriormente.*/
       
      System.out.println("\nContenido de la lista en fila: " + list.getNombreCantantes());       
      //System.out.println(); //Lo puse para dejar un espacio. Otra opción para dejar un espacio o insertar un salto de linea es el uso de (\n)       
      System.out.println("\nContenido de la lista en columna:\n");
      for(int i = 0; i < list.getTamaño();i++){
             System.out.println(list.getNombreCantantes().get(i));
      }
    }
}

Saludos!