Autor Tema: Ejercicio resuelto ArrayList del api Java. Métodos add, size, etc CU00665B  (Leído 4538 veces)

rogergcc

  • Sin experiencia
  • *
  • Mensajes: 17
    • Ver Perfil
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, pida dos cantantes famosos más al usuario, los añada a la lista y muestre el contenido de la lista por pantalla.


Clase ListaCantantesFamosos

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

class ListaCantantesFamosos {
    private ArrayList<String>cantantes;
    private String nombreCantante;

    public ListaCantantesFamosos(ArrayList<String> cantantes, String nombreCantante) {
        this.cantantes = cantantes;
        this.nombreCantante = nombreCantante;
    }

    public ListaCantantesFamosos() {
        this.cantantes = new ArrayList<String>();
        cantantes.add("Ellie Goulding");
        cantantes.add("Don Henley");
        cantantes.add("Zella Day");
    }
    public void dameCantantesFamosos(){
        Scanner sc = new Scanner(System.in);
        nombreCantante = sc.nextLine();
       
    }
    public void addNombre(String valor_nombre){
        cantantes.add(valor_nombre);
    }
    public void listarCantantesFamosos(){
        for (int i = 0; i < cantantes.size(); i++) {
            System.out.println("Cantante Famoso "+(i+1)+" : "+cantantes.get(i));
        }
    }
    public ArrayList<String> getCantantes() {
        return cantantes;
    }
   
    public void setCantantes(ArrayList<String> cantantes) {
        this.cantantes = cantantes;
    }

    public String getNombreCantante() {
        return nombreCantante;
    }

    public void setNombreCantante(String nombreCantante) {
        this.nombreCantante = nombreCantante;
    }
   
}


Clase Main

Código: [Seleccionar]
public class test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ListaCantantesFamosos listaCantantes1 = new ListaCantantesFamosos();
        System.out.println("Por favor introduzca nombre del 4to Cantante :");
        listaCantantes1.dameCantantesFamosos();
        listaCantantes1.addNombre(listaCantantes1.getNombreCantante());
        System.out.println("Por favor introduzca nombre del 5to Cantante :");
       
        listaCantantes1.dameCantantesFamosos();
       
        listaCantantes1.addNombre(listaCantantes1.getNombreCantante());
        //listando cantantes famosos
        listaCantantes1.listarCantantesFamosos();
    }
   
}




Ahhh. Unas preguntas.

  • Se puede escribir por teclado la cantidad de objetos que queremos añadir al ArrayList, para después recién añadir objetos al ArrayList. O no tendria sentido.
    O la unica forma seria teniendo un Menu con opciones: 1.- Añadir CantanteFamoso
  • Que pasaría si queremos añadir mas de 20 objetos al ArrayList, como se reduciria el código porque añadir de esta forma seria muy repititivo.
  • Seria ideal tener la escritura por teclado como una clase aparte para poder ser usada por varias clases.
« Última modificación: 22 de Junio 2015, 22:34 por Alex Rodríguez »

fedegaray

  • Principiante
  • **
  • Mensajes: 81
    • Ver Perfil
Hola rogergcc. Ambas clases están bien construidas y funcionan correctamente.
En la clase ListaCantantesFamosos olvidaste importar las clases java.util.ArrayList y java.util.Scanner. Seguramente las habías cargado en tu código pero habrás olvidado copiarlo en el post del foro, ya que de otra manera no te habría funcionado.

Otro detalle es que en el constructor de esa misma clase no debes pasar como parámetro un ArrayList, sólo las variables locales con las que vas a completar los campos. Fíjate que si quieres instanciar la clase con el constructor que pide parámetros, no tendrás cómo completar ese campo.

Ahora vamos con tus preguntas.
1 - No estoy seguro de entender bien esta pregunta, pero si te refieres a que si se le puede pedir al usuario que determine cuántos objetos quiere añadir al ArrayList, eso seguro que es posible. No es lo que se pedía en este ejercicio, pero si el programador decide darle esa facultad al usuario, entonces sí tendría sentido.

2 - Cuando el código corre el riesgo de volverse repetitivo, debemos buscar la manera de simplificarlo con un bucle. Ya sea que el numero de elementos a añadir esté prefijado, o bien preguntándole al usuario si quiere añadir un nuevo elemento al finalizar cada rulo del bucle, para condicionar la continuidad o el fin del ciclo.

3 - Esta idea es muy válida, y de hecho se utiliza bastante. Puedes crear una clase EntradaDeTeclado, que básicamente sería una cosa así:

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

public class EntradaTeclado {

    private String entrada;

    public EntradaTeclado (){
        String entrada = "";
    }

    public void pedirEntrada () {
        Scanner nuevaEntrada = new Scanner (System.in);
        entrada = nuevaEntrada.nextLine();
    }
}

A esta clase le puedes crear todos los metodos que te vayan a resultar útiles en distintos programas, como por ejemplo getLongitud(), getEntrada(), getPrimeraLetra(), etc.

Cuando quieres utilizar esta clase desde una clase main, creas nuevas instancias de esta manera:

Código: [Seleccionar]
        EntradaTeclado entrada2 = new EntradaTeclado ();
e invocas sus métodos como los de cualquier objeto.

Espero haberte sido de ayuda.

rogergcc

  • Sin experiencia
  • *
  • Mensajes: 17
    • Ver Perfil
Muchas Gracias por las Correcciones fedegaray.   :)

 

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