Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jogonzalezmor en 30 de Julio 2014, 04:20

Título: Entrega Ejercicio CU00665B Scanner y ArrayList java
Publicado por: jogonzalezmor en 30 de Julio 2014, 04:20
Estimados, buenas noches.
Hago entrega del ejercicio CU00665B. He reutilizado nuevamente el código de la clase Entrada Teclado para no tener que escribir tanto código. Ahí les va:

Éste es el código reutilizado de EntradaTeclado
Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
    private String entradaTeclado; //Variable de instancia (campo) de la clase

    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
    } //Cierre del constructor

    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();     } //Cierre del método pedirEntrada

    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
   
    public String getPrimeraPalabra ()  {

        for (int i=0; i < entradaTeclado.length() - 1; i++) {
            if (entradaTeclado.substring (i, i+1).equals("j") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
                return entradaTeclado.substring(0, i+1);         }
        }
        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya
    } //Cierre del método getPrimeraPalabra

    public int getLongitud ()  {  //Método de la clase
        return entradaTeclado.length();
    } //Cierre del método getLongitud
} //Cierre de la clase

Éste es el código de la Clase ListaCantantesFamosos
Código: [Seleccionar]
import java.util.ArrayList;
//Creamos la Clase Lista de cantantes famosos
public class ListaCantantesFamosos
{
    private String cantantesFamosos;
    private ArrayList<String>listadecantantes;

    public ListaCantantesFamosos(String nombreCantante)
    {
        cantantesFamosos = nombreCantante;
        listadecantantes = new ArrayList<String>();
        //dentro del constructor agregamos los nombres de los 3 cantantes que se inicializarán al comienzo
        //del programa.
        listadecantantes.add("Luis Andrés");
        listadecantantes.add("María José");
        listadecantantes.add("Fernanda Rodríguez");
    }//Fin del constructor

    //Creamos el método para agregar cantantes
    public void addCantante(String valor_NombreCantante){listadecantantes.add(valor_NombreCantante);}

    public String getCantante(int posicion){
        if(posicion >= 0 && posicion < listadecantantes.size()){
            return listadecantantes.get(posicion);
        }else {return "No existe cantante para la posición solicitada";
        }//Fin del if
    }//Cierre del método

    public int getTamano(){return listadecantantes.size();}//Cierre del método

    public void removeCantante(int posicion){
        if(posicion >= 0 && posicion < listadecantantes.size()){
            listadecantantes.remove(posicion);
        }else {}//Else vacío. No existe nombre para la posición solicitada, no se ejecuta ninguna instrucción
    }//Cierre del método
}//Fin de la clase

Y por último, la clase para probar el ArrayList
Código: [Seleccionar]
//Creamos la clase para probar el ArrayList de Cantantes Famosos
public class TestListaCantantes
{
    //Utilizamos el mismo main del ejercicio anterior, sólo midificamos para que nos solicite dos entradas de teclado, y no 3
    public static void main(String[]args){
        System.out.println("Empezamos el programa");
        System.out.println("Por favor introduzca el nombre de un cantante"); EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println("Por favor introduzca el nombre de otro cantante"); EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println("Gracias");

        ListaCantantesFamosos lista1 = new ListaCantantesFamosos("Cantantes introducidos por usuario");
        lista1.addCantante(entrada1.getEntrada());
        lista1.addCantante(entrada2.getEntrada());
       
        System.out.println("La lista ha quedado formada por " + lista1.getTamano() + " elementos");
        //Utilizamos un for que verificará el tamaño del ArrayList y así nos muestre la cantidad de Cantantes Ingresados
        for(int i=0; i<lista1.getTamano(); i++ ){
            System.out.println("Elemento "+ i + ": " + lista1.getCantante(i));
        }//Fin del for
    }//Fin del main

}//Fin de la clase

Atento a sus comentarios, me despido.

Salu2....
Título: Re:Entrega Ejercicio CU00665B
Publicado por: Alex Rodríguez en 31 de Julio 2014, 00:40
Hola, el código funciona bien y resuelve lo que pide el ejercicio. Lo que te diría que hay que mejorar es lo siguiente:

ListaCantantesFamosos lista1 = new ListaCantantesFamosos("Cantantes introducidos por usuario");

¿Qué es el parámetro? Es el nombre de la lista de cantantes que estás creando

Sin embargo en el constructor de la clase ListaCantantesFamosos escribes lo siguiente:

public ListaCantantesFamosos(String nombreCantante)

cuando sería más correcto

public ListaCantantesFamosos(String nombreDeLaLista) ó public ListaCantantesFamosos(String tituloDeLaLista)

El problema de poner ahí nombreCantante es que crea confusión: una persona que revise el código no entenderá qué es lo que quieres hacer. El código debe ser claro y consistente, así es como lograrás que sea "bien valorado" por quien lo revise. En este caso tienes una inconsistencia...

Saludos.