Autor Tema: Ejercicio (CU00665B), Clase ArrayList del api Java. Significado de else vacío  (Leído 3758 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas tardes

Hago entrega del ejercicio del capitulo 65 donde el enunciado dice así:

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]
package Cantant;
import java.util.ArrayList;

public class ListaCantantesFamosos {
    private ArrayList<String> cantantes;

    public ListaCantantesFamosos(){
        cantantes = new ArrayList(2);
    }

    public void setNombreCantante(String nombreCantante){
        cantantes.add(nombreCantante);
    }

    public String getCantante(int index){
        if(index >= 0 && index < cantantes.size()){
            return cantantes.get(index);
        }
        else
            return "No existe cantante en esta casilla.";
    }

    public int getTamaño(){
        return cantantes.size();
    }

    public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else
        {System.out.println("No existe cantante en esta casilla.");}
    }
}

Clase Test:

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

public class Test {
   public static void main(String[]args){
       ListaCantantesFamosos List = new ListaCantantesFamosos();
       List.setNombreCantante("Ruben Blades");
       String dato;
       Scanner in = new Scanner(System.in);
       System.out.println("Ingresa cantante famoso 1 : ");
       dato = in.nextLine();
       List.setNombreCantante(dato);
       System.out.println("Ingresa cantante famoso 2 : ");
       dato = in.nextLine();
       List.setNombreCantante(dato);
       System.out.println(" ");
       for (int i = 0 ; i < List.getTamaño(); i++){
           System.out.println(List.getCantante(i));
       }
   }
}

Resultado:



Agradezco mucho sus comentarios y correcciones.
Gracias!
« Última modificación: 08 de Abril 2015, 01:17 por Ogramar »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Re:Ejercicio (CU00665B), Clase ArrayList del api Java.
« Respuesta #1 en: 07 de Abril 2015, 17:03 »
Ooops, me falto un pisss de linea :

 cantantes = new ArrayList<String>(2);


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

public class ListaCantantesFamosos {
    private ArrayList<String> cantantes;

    public ListaCantantesFamosos(){
        cantantes = new ArrayList[b]<String>[/b](2);
    }

    public void setNombreCantante(String nombreCantante){
        cantantes.add(nombreCantante);
    }

    public String getCantante(int index){
        if(index >= 0 && index < cantantes.size()){
            return cantantes.get(index);
        }
        else
            return "No existe cantante en esta casilla.";
    }

    public int getTamaño(){
        return cantantes.size();
    }

    public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else
        {System.out.println("No existe cantante en esta casilla.");}
    }
}

Para que solo admita String!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ejercicio (CU00665B), Clase ArrayList del api Java.
« Respuesta #2 en: 08 de Abril 2015, 01:17 »
Hola Dan, ya que llevas realizada una buena parte del curso conviene que empieces a fijarte en detalles Te señalo este:

Código: [Seleccionar]
        public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else
        {System.out.println("No existe cantante en esta casilla.");}
    }
       

Un método normalmente:

- Hace algo ó
- Devuelve algo ó
- Hace algo y devuelve algo

El trabajo de un método debe ser uniforme, no debe ocurrir que un método en algunos casos elimine un elemento de una lista y en otros muestre un mensaje por pantalla.

Mostrar mensajes por pantalla no suele ser un trabajo que deban realizar los métodos. El System.out.println normalmente debes delegarlo en el método main. Si necesitas que el método sirva para mostrar por pantalla haz que devuelva un String y después trátalo en el main.

En este caso se puede resolver así:

Código: [Seleccionar]
        public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else{}
}
       

Donde el else vacío indica que no se hace nada. Realmente hay otras formas quizás mejores de resolverlo, pero no es el momento de ver esto. Simplemente recuerda que los métodos no deben en general mostrar mensajes por pantalla, si quieres que devuelva un mensaje haz que devuelva un String con el mensaje.

Salu2

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Hola Ogramar!!!

Que comentario tan claro!! la verdad me tenia confundido eso de donde deberia mostrar mensajes por pantalla. Pensé primero que como el main debía tener el menor código posible, en los metodos podia poner los System.out... pero ya veo que es valido dejarlo en el main!

Gracias!!!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

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