Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Dan_SB en 06 de Abril 2015, 22:55
-
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:
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:
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:
(http://i.imgur.com/f3lb3ty.png)
Agradezco mucho sus comentarios y correcciones.
Gracias!
-
Ooops, me falto un pisss de linea :
cantantes = new ArrayList<String>(2);
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!
-
Hola Dan, ya que llevas realizada una buena parte del curso conviene que empieces a fijarte en detalles Te señalo este:
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í:
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
-
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!!!