Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: MarckyMarck en 22 de Septiembre 2015, 00:05
-
Buenas tardes,
Les muestro mi ejercicio CU00665B, debo confesar que me dio un poco de trabajo que me compilara todo bien.
Código Main
import java.util.ArrayList;
public class Test
{
public static void main (String[]args)
{
ListaCantantesFamosos cantantes= new ListaCantantesFamosos();
System.out.println("Escriba el nombre de un cantante famoso.");
cantantes.addNombre();
System.out.println("Escriba el nombre de otro cantante famoso.");
cantantes.addNombre();
System.out.println("Los nombres son: ");
for(int i=0;i<5;i++){
System.out.println(cantantes.showNombre(i));
}
}
}
Clase para crear ArrayList
import java.util.ArrayList;
public class ListaCantantesFamosos
{
private ArrayList<String>listaCantantes;
public ListaCantantesFamosos()
{
listaCantantes=new ArrayList<String>();
listaCantantes.add("Luis Miguel");
listaCantantes.add("John Lelon");
listaCantantes.add("Mathew Komma");
}
//Métodos para ArrayList
public void addNombre(){
IntroTexto nomCantante= new IntroTexto();
listaCantantes.add(nomCantante.getPalabra());
}
public String showNombre(int posicion){
return listaCantantes.get(posicion);
}
}
Clase para entrada de texto
import java.util.Scanner;
public class IntroTexto
{
String entradaTexto;
public IntroTexto()
{
entradaTexto="";
Scanner nuevaPalabra=new Scanner(System.in);
entradaTexto=nuevaPalabra.nextLine();
}
public void setPalabra ()
{
Scanner nuevaPalabra=new Scanner(System.in);
entradaTexto=nuevaPalabra.nextLine();
}
public String getPalabra()
{
return entradaTexto;
}
}
Les agradezco mucho de antemano, saludos!
-
Hola MarckyMarck, tu código funciona bien y cumple lo que solicitaba el ejercicio. Cosas que debes tener en cuenta para mejorar:
- Añade métodos get y set siempre en tus clases, por ejemplo no tienes en la clase ListaCantantesFamosos public ArrayList<String> getLista() { return listaCantantes;}
- Intenta no hacer recorridos de bucles indicando números concretos como límites
for(int i=0;i<5;i++){
System.out.println(cantantes.showNombre(i));
}
Sería mejor:
for(int i=0;i<cantantes.getLista().size();i++){
System.out.println(cantantes.showNombre(i));
}
- Cada método debe tener una responsabilidad única, clara y bien definida. No es un buen diseño:
public void addNombre(){
IntroTexto nomCantante= new IntroTexto();
listaCantantes.add(nomCantante.getPalabra());
}
Este método debería recibir un cantante y añadirlo, eso es lo que hace un método add. Si querías un método para pedir un cantante y añadirlo a la lista deberías haberlo nombrado de otra manera por ejemplo
public void pedirNombreEInsertarEnLista(){
IntroTexto nomCantante= new IntroTexto();
listaCantantes.add(nomCantante.getPalabra());
}
Sin embargo este método no está tampoco bien diseñado, porque un método debe encargarse de una cosa y no de dos. Si es para pedir un nombre, no es para insertar, y si es para insertar, no es para pedir. Esto se llama cohesión de un método: cada método tiene su responsabilidad. Esto son bases de diseño para hacer buenos programas en Java.
Te recomiendo revisar el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1549 y compararlo con tu código
Salu2!