Autor Tema: Clase ArrayList del api Java. Ejercicio CU00665B  (Leído 1361 veces)

Juanfran.ib

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Clase ArrayList del api Java. Ejercicio CU00665B
« en: 27 de Julio 2023, 18:07 »
Dejo aquí mi solución a este ejercicio.

He usado la clase EntradaDeTeclado:
Código: [Seleccionar]

import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

// Definimos una clase EntradaDeTeclado

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(" ") ) {     //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

El código de la clase ListaCantantesFamosos:
Código: [Seleccionar]
import java.util.ArrayList;

//Esta clase representa una lista de nombres manejada con la clase ArrayList de Java

public class ListaCantantesFamosos {
    private String nombreDeLaLista; //Establecemos un atributo nombre de la lista
    private ArrayList<String> listaDeCantantes; //Declaramos un ArrayList que contiene objetos String
 
    public ListaCantantesFamosos (String nombre){    //Constructor: crea una lista de nombres vacía
        String nombreDeLaLista = nombre;
        listaDeCantantes = new ArrayList<String>(); //Creamos el objeto de tipo ArrayList
        listaDeCantantes.add ("Julio Iglesias");
        listaDeCantantes.add ("Paco Ibáñez");
        listaDeCantantes.add ("Luis Guerra");

    } //Cierre del constructor

    public void addCantante (String nuevoCantante) { listaDeCantantes.add (nuevoCantante); } //Cierre del método


    public String getCantante (int posicion) { //Método

        if (posicion >= 0 && posicion < listaDeCantantes.size() ) {

            return listaDeCantantes.get(posicion); }

        else { return "No existe cantante para la posición solicitada";}

    } //Cierre del método 


    public int getTamaño () { return listaDeCantantes.size(); } //Cierre del método


    public void removeCantante (int posicion) {  //Método

        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 removeNombre

} //Cierre de la clase

Y finalmente adjunto  el main

Código: [Seleccionar]
public class TestListaCantantesFamosos {

    public static void main (String [ ] args) {

        System.out.println ("Empezamos el programa");   

        System.out.println ("Por favor introduzca el nombre de un cantante famoso a añadir en la lista:");          EntradaDeTeclado entrada1 = new EntradaDeTeclado();

        System.out.println ("Por favor introduzca el nombre de otro cantante famoso a añadir a la lista:");         EntradaDeTeclado entrada2 = new EntradaDeTeclado();


        System.out.println ("Gracias, estos dos nombres de cantantes famosos se van a añadir a la lista de Cantantes Famosos");

        ListaCantantesFamosos lista1 = new ListaCantantesFamosos("Cantantes Famosos");

        lista1.addCantante (entrada1.getEntrada() );

        lista1.addCantante (entrada2.getEntrada() );
       
        System.out.println ("La lista ha quedado formada por " + lista1.getTamaño() + " elementos");
        int j = lista1.getTamaño();
        int i=0;
        while (j>0){System.out.println ("Elemento "+ (i+1) +" : " + lista1.getCantante(i) );
        i+=1;
        j-=1;
           
    }
    }

Gracias  por vuestros comentarios.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Clase ArrayList del api Java. Ejercicio CU00665B
« Respuesta #1 en: 28 de Julio 2023, 00:52 »
Hola, solo dos detalles de poca importancia:

1- En el código, mejor evitar siempre usar la letra ñ, así como otros caracteres que
sean ajenos al alfabeto inglés.
Código: [Seleccionar]
public int getTamaño () { return listaDeCantantes.size(); }Esto es porque, aunque a nosotros nos funcione, puede haber problemas al compartir nuestro código con otros programadores de otros países cuyos sistemas operativos y programas de edición no contengan una tabla de caracteres que reconozca símbolos latinos como la ñ, las vocales con tilde, vocales con diéresis, las aperturas de interrogación y exclamación(anglosajones solo usan los cierres), etc...

Como digo, es una recomendación, no una obligación. Fastidia un poco, porque entonces hay que escribir "mal" estos nombres.
Se puede usar simplemente la letra n:
Código: [Seleccionar]
public int getTamano () { return listaDeCantantes.size(); }
Pero hay otras formas que se usan habitualmente: tamanio, tamanyo, tamanho,...
Sobre todo vamos a querer usarlas cuando la palabra es "año", porque si solo usamos la n..., emmm.., pues no es elegante  :o




2- Otra recomendación, no obligación.
Si un else va a quedar vacío, pues simplemente no se pone ningún else y ya está.
Si lo creemos necesario, podemos añadir el comentario explicando que en caso de no cumplirse la condición anterior entonces no va a ocurrir nada.
Pero no es necesario incluir un else vacío.
Citar
    public void removeCantante (int posicion) {  //Método

        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

    }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

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