Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: el_calderas en 21 de Febrero 2015, 17:02

Título: Ejercicio CU00665B ArrayList api java add size concepto clase generica parametri
Publicado por: el_calderas en 21 de Febrero 2015, 17:02
Hola, esta es mi solución para este ejercicio del curso de java.

He utilizado tres clases, la clase ListaCantantesFamosos:

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

public class ListaCantantesFamosos
{
    private ArrayList<String>nombresCantantes;  //declaramos un objeto de tipo ArrayList
    private String nombreLista; //siempre hay que crear el objeto que contiene el nombre del array que creamos.
   
    //constructor
    public ListaCantantesFamosos(String nombre){ //al llamar al constructor nos pedira que introduzcamos el nombre de la lista
        nombreLista=nombre;
        nombresCantantes=new ArrayList<String>();
        nombresCantantes.add("Madona");// con el constructor, añadimos directamente 3 nombres a la lista
        nombresCantantes.add("Queen");
        nombresCantantes.add("Bon Jovi");
    }
   
    public void addNombre(String newNombre){//metodo para añadir nombres a la lista
        nombresCantantes.add(newNombre);
    }
       
    public String getNombre(int posicion){//metodo para obtener un nombre de la lista, segun su indicie
        if(posicion>=0 && posicion<nombresCantantes.size()){
            return nombresCantantes.get(posicion);
        }else{
            return "No existe nombre para la posición solicitada";
        }
    }
   
    public int getTamaño(){//metodo para obtener el tamaño de la lista
        return nombresCantantes.size();
    }
   
    public void removeNombreLista(int posicion){//metodo para borrar un nombre de la lista
        if (posicion>=0 && posicion<nombresCantantes.size()){
            nombresCantantes.remove(posicion);
        }else{} //no exite nombre para la posicion solicitada. No se ejecuta ninguna instruccion
    }
}

La clase que contiene el main, TextListaCantantes:

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

public class TextListaCantantes
{
    public static void main (String[]args){
        int x;
        System.out.println("¿Cuantos nombres vas a introducir?");
        Scanner sc=new Scanner(System.in);// se crea un objeto de tipo Scanner
        x=sc.nextInt();//nextInt(): metodo para leer un entero con la clase Scanner. Se lee el entero de cuantos nombres se van a introducir
        sc.nextLine();//limpiar bufer de entrada. SIEMPRE acontinuación de leer datos numericos y despues se tenga que leer datos de tipo caracter.

        ListaCantantesFamosos lista=new ListaCantantesFamosos("Cantantes");// se crea un objeto de tipo Array(String)(ListaCantantesFamosos)
        for(int i=0;i<x;i++){
            System.out.println("Por favor, introduzca nombre de cantante");
            EntradaDeTeclado entrada=new EntradaDeTeclado(); //Se crea un objeto tipo EntradaTeclado. Se utiliza la clase EntradaDeTeclado.
            lista.addNombre(entrada.getEntrada());//addNombre():metodo de la clase ListaCantantesFamosos para añadir un nombre a la lista
        }

        System.out.println("La lista ha quedado formada por:");
        for(int i=0;i<lista.getTamaño();i++){
            System.out.println(lista.getNombre(i));
        }
    }
}

Y la clase que ya utilizamos en otro ejercicio, EntradaDeTeclado:

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

public class EntradaDeTeclado
{
    private String entradaTeclado; //variable de instancia(campo) de la clase
   
    public EntradaDeTeclado(){ //constructor
        entradaTeclado=""; //inicializamos la instancia de la clase
        pedirEntrada(); // Esto es una llamada a un método interno. Al crear un objeto automaticamente, ejecutamos el metodo
    }
   
    public void pedirEntrada(){ //metodo de la clase
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
    }
   
    public String getEntrada(){
        return entradaTeclado;
    }
   
    //en esta prueba no se utilizan estos metodos
    public String getPrimeraPalabra(){
       
        for(int i=0;i<entradaTeclado.length()-1;i++){
            if(entradaTeclado.substring(i,i+1).equals(" ")){
                return entradaTeclado.substring(0,i+1);
            }
        }
        return entradaTeclado; //en el caso de que no se detecte ningun espacio, devolvemos lo que haya
    }
   
    public int getLongitud(){
        return entradaTeclado.length();
    }
}

Un saludo.
Título: Re:Ejercicio CU00665B ArrayList api java add size concepto clase generica parametri
Publicado por: Ogramar en 23 de Febrero 2015, 12:37
Hola has realizado el ejercicio y has hecho más de lo que pedía el enunciado, ya que el enunciado sólo pedía añadir dos cantantes más mientras que tú das opción a que el usuario elija el número de cantantes, así que perfecto y adelante.

Comentar que aAunque pueden usarse eñes en general se recomienda no usarlas porque a la larga pueden dar problemas, por ello te diría que mejor getSize que getTamaño

Salu2
Título: Re:Ejercicio CU00665B ArrayList api java add size concepto clase generica parametri
Publicado por: el_calderas en 23 de Febrero 2015, 13:34
Gracias por el consejo. La verdad es que por falta de constumbre, mezclo español e ingles en las declaraciones y a veces es un lio.
Un saludo.