Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rogergcc en 04 de Mayo 2015, 05:09

Título: Ejercicio resuelto ArrayList del api Java. Métodos add, size, etc CU00665B
Publicado por: rogergcc en 04 de Mayo 2015, 05:09
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();
    }
   
}

(http://i.imgur.com/9Ljhe7c.png)


Ahhh. Unas preguntas.

Título: Re:Ejercicio CU00665B. Clase ArrayList del api Java. Métodos add, size, etc
Publicado por: fedegaray en 04 de Mayo 2015, 18:08
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.
Título: Re:Ejercicio CU00665B. Clase ArrayList del api Java. Métodos add, size, etc
Publicado por: rogergcc en 05 de Mayo 2015, 00:55
Muchas Gracias por las Correcciones fedegaray.   :)