Autor Tema: Ejercicios! CU00665B y CU00666B recorrer colecciones objetos java  (Leído 4242 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
(Los códigos del ejercicio 00666B están desactivados en modo comentario en cada clase)

public class ListaCantantesFamosos
Código: [Seleccionar]
import java.util.*;
public class ListaCantantesFamosos
{
    private ArrayList<String> lista = new ArrayList<String>();
    public ListaCantantesFamosos()
    {
      lista.add("Drake");
      lista.add("Juan luis guerra");
      lista.add("Tempo");
    }
   
    public void addNombre(String nombreCantante)
    {
      lista.add(nombreCantante);
    }
   
    public void verTodosLosNombresEnLaLista()//esta es una forma rustica de ver los objetos que colecciona el ArrayList<String> lista (alternativa a usar un for each)
    {
      int i = 0;
      do
      {
        System.out.println(lista.get(i)); i++;
      }while(i < lista.size());
    }
   
    public int verSizeDeLaLista()
    {
      return lista.size();
    }
   
    public String verNombreEnLaPosicionIndicada(int posicion)
    {
     return lista.get(posicion);
    }
   
    public void reemplazarNombre(int posicion, String nombre)
    {
      lista.set(posicion, nombre);
    }
   
    public void borrarNombre(int posicion)
    {
      lista.remove(posicion);
    }
}

/*public class ListaCantantesFamosos
{
    private ArrayList<String> lista = new ArrayList<String>();
    public ListaCantantesFamosos()
    {
      lista.add("Drake");
      lista.add("Juan luis guerra");
      lista.add("Tempo");
    }
   
    public void addNombre(String nombreCantante)
    {
      lista.add(nombreCantante);
    }
   
    public ArrayList<String> coleccionDeObjetos()//este método devuelve un objeto tipo ArrayList<String> que contiene una colección de objetos con nombres de cantantes famosos
    {
      return lista;
    }
   
    public int verSizeDeLaLista()
    {
      return lista.size();
    }
   
    public String verNombreEnLaPosicionIndicada(int posicion)
    {
     return lista.get(posicion);
    }
   
    public void reemplazarNombre(int posicion, String nombre)
    {
      lista.set(posicion, nombre);
    }
   
    public void borrarNombre(int posicion)
    {
      lista.remove(posicion);
    }
}*/
public class TesListaCantantesFamosos
Código: [Seleccionar]
import java.util.*;
public class TesListaCantantesFamosos
{
    public TesListaCantantesFamosos()
    {

    }
   
    public static void main(String []args)
    {
      System.out.println(" Hola\nayudanos a completar el top 5 de cantantes famosos de la semana, asta el momento tenemos los siguientes tres cantantes:\n ");
      ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
      lista1.verTodosLosNombresEnLaLista();//que desventajas tendria esta sintaxis: ? System.out.println(lista1.verListadoCompleto());
      System.out.println("\npor favor nombra dos cantantes mas para completar el top 5\nIngresa el 4to cantante");
      Scanner escaner = new Scanner(System.in);
      String cuartoCantante = "";
      cuartoCantante = escaner.nextLine();
      System.out.println("ahora ingresa el 5to cantante");
      String quintoCantante = "";
      quintoCantante = escaner.nextLine();
      lista1.addNombre(cuartoCantante);
      lista1.addNombre(quintoCantante);
      System.out.println("\f\nEste es el top 5 de la semana\n");
      lista1.verTodosLosNombresEnLaLista();
      System.out.println("\nGracias por ayudarnos a completar el top 5 de la semana\nhasta luego!");
     
    }

}

/*public class TesListaCantantesFamosos
{
    public TesListaCantantesFamosos()
    {
   
    }
   
    public static void main(String []args)
    {
      System.out.println(" Hola!\nvamos a crear una lista de cantantes famosos, nosotros ya hemos agregado 3 cantantes a la lista, ahora agrega tu cuantos cantantes quieras.\n");
      ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
      for(String nombre: lista1.coleccionDeObjetos())
      {
        System.out.println(nombre);
      }
      System.out.println("\nintroduce el nombre de otro cantante famoso");
      Scanner escaner = new Scanner(System.in);
      String otroCantante = "";
      otroCantante = escaner.nextLine();
      lista1.addNombre(otroCantante);
      System.out.println("\f\nSe a actualizado la lista con el nombre \"" + otroCantante + "\" añadido en la ultima posicion de la lista con " +
      lista1.verSizeDeLaLista() + " cantantes.");
      for(String nombre: lista1.coleccionDeObjetos())
      {
        System.out.println(nombre);
      }
      System.out.println("\nsi deseas volver a introducir otro cantante famoso a la lista, por favor escribe \"si" + "\" o simplemente preciona \"enter" + "\" para finalizar" );
      String volver = escaner.nextLine();
      while(volver.equals("SI") || volver.equals("si") || volver.equals("Si") || volver.equals("sI"))
      {
        System.out.println("escribe el nombre");
        String otroCantanteMas = escaner.nextLine();
        lista1.addNombre(otroCantanteMas);
        System.out.println("\f\nSe a actualizado la lista con el nombre \"" + otroCantanteMas + "\" añadido en la ultima posicion de la lista con " +
        lista1.verSizeDeLaLista() + " cantantes");
        for(String nombre: lista1.coleccionDeObjetos())
        {
          System.out.println(nombre);
        }
        System.out.println("\nsi deseas volver a introducir otro cantante famoso a la lista, por favor escribe \"si" + "\" o simplemente presiona \"enter" +
        "\" para terminar con la entrada de nombres");
        volver = escaner.nextLine();
      }
      System.out.println("\f\n Se a actualizado la lista!");
      System.out.println("has agregado " + (lista1.verSizeDeLaLista() - 3) +
      " cantantes famosos exitosamente a la lista.\nestos son los " + lista1.verSizeDeLaLista() + " cantantes famosos de nuestra lista:\n");
      int i = 0;
      for(String nombre: lista1.coleccionDeObjetos())
      {
         System.out.println(nombre); i++;
      }
     
      System.out.println("\nsi deseas reemplazar uno de los nombres en la lista, por favor escribe \"si" + "\" o simplemente presiona \"enter" + "\" para terminar de reemplazar");
      String editar = "";
      editar = escaner.nextLine();
      while(editar.equals("SI") || editar.equals("si") || editar.equals("Si") || editar.equals("sI"))
      {
        System.out.println("\f\npor favor escribe el numero relacionado al nombre que deseas reemplazar\n");
        i = 0;
        for(String nombre: lista1.coleccionDeObjetos())
        {
          System.out.println(i + " - " + nombre);  i++;
        }
        String posicion = "";
        posicion = escaner.nextLine();
        int enteroPosicion = Integer.parseInt(posicion);
        System.out.println("ahora escribe el nuevo nombre que reemplazara a " + lista1.verNombreEnLaPosicionIndicada(enteroPosicion));
        String nuevoNombre = "";
        nuevoNombre = escaner.nextLine();
        lista1.reemplazarNombre(enteroPosicion, nuevoNombre);
        System.out.println("\f\nse a actualizado la lista\n");
        for(String nombre: lista1.coleccionDeObjetos())
        {
          System.out.println(nombre);  i++;
        }
        System.out.println("\nsi deseas reemplazar otro de los nombres en la lista, por favor escribe \"si" + "\" o simplemente presiona \"enter" + "\" para terminar de reemplazr");
        editar = "";
        editar = escaner.nextLine();
      }
      System.out.println("si deseas eliminar uno de los nombres en la lista, por favor escribe \"si" + "\" o simplemente presiona \"enter" + "\" para finalizar");
      String eliminar = "";
      eliminar = escaner.nextLine();
      while(eliminar.equals("SI") || eliminar.equals("si") || eliminar.equals("Si") || eliminar.equals("sI"))
      {
        System.out.println("\f\npor favor escribe el numero relacionado al nombre que deseas eliminar\n");
        i = 0;
        for(String nombre: lista1.coleccionDeObjetos())
        {
          System.out.println(i + " - " + nombre); i++;
        }
        String posicion = "";
        posicion = escaner.nextLine();
        int enteroPosicion = Integer.parseInt(posicion);
        System.out.println("\f\nse a eliminado a " + lista1.verNombreEnLaPosicionIndicada(enteroPosicion) + " de la lista\n");
        lista1.borrarNombre(enteroPosicion);
       
        for(String nombre: lista1.coleccionDeObjetos())
        {
          System.out.println(nombre); i++;
        }
        System.out.println("\nsi deseas eliminar otro de los nombres en la lista, por favor escribe \"si" + "\" o simplemente preciona \"enter" + "\" para finalizar");
        eliminar = "";
        eliminar = escaner.nextLine();
      }
      System.out.println("\f\nAsi a quedado nuestra lista:\n");
      i = 1;
      for(String nombre: lista1.coleccionDeObjetos())
      {
        System.out.println("Cantante en la posicion: " + i + " - " + nombre);  i++;
      }     
      System.out.println(" \nGracias por ayudarnos con nuestra lista de cantantes famosos\nhasta luego!");
    }
}*/

Salu2!
« Última modificación: 31 de Agosto 2014, 11:33 por Alex Rodríguez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicios! entregas CU00665B y CU00666B
« Respuesta #1 en: 26 de Julio 2014, 00:27 »
Hola, antes de nada comentarte que es preferible que publiques dos temas en el foro, uno para cada ejercicio, en lugar de incluir código comentado ya que hace más difícil el compilarlo y revisarlo.

Sobre el ejercicio CU00665B: está todo correcto, bien trabajado.

Sobre la duda:

lista1.verTodosLosNombresEnLaLista();//que desventajas tendria esta sintaxis: ? System.out.println(lista1.verListadoCompleto());

Ambas sintaxis serían aceptables. Me parece mejor la primera porque un método se encarga de realizar el trabajo y no dependes de una instrucción como System.out.println. Al no depender, es el propio objeto quien se encarga de resolver sus necesidades sin tener que ser ayudado por otras instrucciones auxiliares.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicios! entregas CU00665B y CU00666B
« Respuesta #2 en: 26 de Julio 2014, 00:38 »
Sobre el ejercicio CU00666B:

El nombre del método coleccionDeObjetos() no es del todo adecuado pues no dice qué es lo que hace el método. Sería más adecuado un nombre como obtenerColeccionDeObjetos(), esto deja más claro qué es lo que hace el método.

Sobre el código: en general está bien trabajado y bien diseñado, además has introducido algunas mejoras y lo has hecho bien, eso además te permite ir cogiendo soltura en la programación.

Hay un detalle que no es adecuado: primero tienes un código para pedir el primer nombre de cantante, y después si se quiere volver a pedir otro cantante vuelves a tener un código muy similar. En general, un código no debe repetirse. Una buena forma de "afinar" y comprender mejor sería que revisaras el código y trataras de eliminar toda repetición. Para ello, aquellos procesos que se repiten los podrías poner en métodos y cuando los necesites, llamar al método. De esta manera, evitas las repeticiones, algo muy importante en programación. Saludos.

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejercicios! entregas CU00665B y CU00666B
« Respuesta #3 en: 26 de Julio 2014, 15:09 »
Gracias Alex, tomare en cuenta esos detalles a reforzar!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

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