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: @dib_vz en 08 de Diciembre 2014, 05:22
-
Aqui os dejo un nuevo ejercicio del curso de java. He intentado ir siguiendo los consejos y recomendaciones que a lo largo del curso me habeis ido comentando en los ejercicios.
He creado una clase ListaCantantesFamosos para crear objetos ArrayList
import java.util.ArrayList;
public class ListaCantantesFamosos {
private String nombreListaCantantes;
private ArrayList<String> listaCantantes;
//constructor
public ListaCantantesFamosos () {
nombreListaCantantes = "CANTANTES FAMOSOS";
listaCantantes = new ArrayList<String>();
listaCantantes.add("Paulina Rubio");
listaCantantes.add("Shakira");
listaCantantes.add("Beyonce");
}
public void añadirNombre (String nombreCantante) {
listaCantantes.add(nombreCantante);
}
public ArrayList<String> getListaCantantes() {
return listaCantantes;
}
public int getTamaño() {
return listaCantantes.size();
}
public String getNombreLista() {
return nombreListaCantantes;
}
//Con este metodo se imprime la lista en pantalla en formato columna
public void imprimirLista () {
System.out.println("\n" + getNombreLista() + "\n");
for (int i=0; i<getTamaño(); i++) {
System.out.println((i+1) + " --- " + getListaCantantes().get(i));
}
}
}
Posteiormente he creado la clase con el metodo main para inicializar el programa y todos los procesos que piden en el ejercicio.
public class TestCantantes {
public static void main (String[] args) {
System.out.println("Esta es una lista de cantantes famosos");
ListaCantantesFamosos lista = new ListaCantantesFamosos();
lista.imprimirLista();
boolean lanzador = true;
while (lanzador==true) {
System.out.println("\n¿Desea añadir un nuevo nombre a la lista?(y/n)");
EntradaPalabras confirmador = new EntradaPalabras();
if (confirmador.getPalabra().equalsIgnoreCase("y")) {
System.out.println("\nPor favor, introduzca un nuevo cantante:");
EntradaPalabras nombre = new EntradaPalabras();
lista.añadirNombre(nombre.getPalabra());
} else {
lanzador = false;
System.out.println("\nSu lista definitiva esta compuesta por " + (lista.getTamaño()) + " referencias de:");
lista.imprimirLista();
System.out.println("\nEspero que haya disfrutado del programa.\n\nDesarrollado por @dib_vz");
}
}
}
}
Se hace referencia a otra clase EntradaPalabras, que es la que cree en otros ejercicios para utilizar la clase Scanner
Gracias por todo y un saludo!
-
Hola, para poder revisar el ejercicio es necesario todo el código que se utilice en él, aunque sean clases auxiliares o clases que hayan participado en otros ejercicios. Disponiendo de todo el código podemos compilar y ver exactamente el código, mientras que faltando algunas clases tendríamos que buscarlas para poder compilar. Te lo comento por "Se hace referencia a otra clase EntradaPalabras, que es la que cree en otros ejercicios para utilizar la clase Scanner"
Pega el código de esa clase que falta para poder revisarlo.
Salu2!
-
Tienes razon, aqui esta la clase que falta:
import java.util.Scanner;
public class EntradaPalabras {
private String palabra;
//constructor
public EntradaPalabras() {
palabra="";
pedirPalabra();
quitarEspacio();
}
//metodo para pedir una entrada de teclado
public void pedirPalabra() {
Scanner entradaEscaner = new Scanner(System.in);
palabra = entradaEscaner.nextLine();
}
//este metodo analiza los primeros caracteres para elimnar los espacios antes de la palabra
public void quitarEspacio() {
for (int i=0; i<getLongitud(); i++) {
if (palabra.substring(0,1).equals(" ")) {
palabra=palabra.substring(1,getLongitud());
}else {
palabra=palabra;
}
}
}
public String getPalabra() {
return palabra;
}
public int getLongitud() {
return palabra.length();
}
}
-
Ahora sí he podido compilarlo :)
Viendo las clases.
En la clase EntradaPalabras.
El método:
//este metodo analiza los primeros caracteres para elimnar los espacios antes de la palabra
public void quitarEspacio() {
for (int i=0; i<getLongitud(); i++) {
if (palabra.substring(0,1).equals(" ")) {
palabra=palabra.substring(1,getLongitud());
}else {
palabra=palabra;
}
}
}
En el comentario dice que quita los espacios antes de la palabra, pero en realidad no parece que funcione bien siempre. Por ejemplo si introduzco 7 espacios y el nombre ana no elimina todos los espacios. Sugerencia: más que hacer una modificación de la palabra al mismo tiempo que la recorres, sería posiblemente mejor recorrer la palabra original por un lado y crear la nueva palabra (sin espacios) por otro para evitar estar recorriendo y modificando al mismo tiempo.
En la clase ListaCantantesFamosos: preferible no usar eñes en los nombres de variables y métodos (por ejemplo mejor addNombre que añadirNombre). Aunque esté permitido, puede darte problemas a la larga.
Clase TestCantantes: la veo muy bien planteada y bien compacta.
Salu2!