Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: javalopez en 18 de Junio 2015, 02:36
-
Buenas noches, aquí les dejo el código de mi ejercicio...
import java.util.ArrayList;
import java.util.Scanner;
public class ListaCantantesFamosos{
private String nombreCantante;
private ArrayList<String> listanombres;
public ListaCantantesFamosos(String nombreCantante) {//construcor que recibe parametro desde main
listanombres.add(nombreCantante);
}
public ListaCantantesFamosos(){ //constructor
listanombres=new ArrayList<String>();
listanombres.add("Bruce Dickinson");
listanombres.add("Axel Rose");
listanombres.add("Chaqueño Palavecino");
}
public void addNombre (String valorNombre) //Metodo para agregar nombres
{ listanombres.add (valorNombre); }
public void ingresaCantantesFamosos(){
Scanner escaner = new Scanner(System.in);
nombreCantante = escaner.nextLine();
}
public void listarCantantes () {
int i=0;
for (String nombre: listanombres)
{
System.out.println ("Cantante " +(i+1)+": "+nombre);
i++;
}
}
public String getNombreCantante(){return nombreCantante;}
}
import java.util.Scanner;
public class TestListaCantantesFamosos{
public static void main (String [ ] args) {
Scanner entradaEscaner = new Scanner(System.in);
String entradaTeclado="";
ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
System.out.print("\f");
System.out.println("La lista de cantantes famosos es la siguiente:");
listaCantantes.listarCantantes();
System.out.println ("Por favor introduzca un nombre de cantante famoso:");
listaCantantes.ingresaCantantesFamosos();
listaCantantes.addNombre(listaCantantes.getNombreCantante());
System.out.println("La lista de cantantes famosos es la siguiente:");
listaCantantes.listarCantantes();//metodo que lista mediante un for extendido
System.out.println("Desea introducir otro cantante presione \"S/N\"");
entradaTeclado = entradaEscaner.nextLine();
do{
if(entradaTeclado.substring(0, 1).equalsIgnoreCase("s")){
System.out.println ("Por favor introduzca un nombre de cantante famoso:");
listaCantantes.ingresaCantantesFamosos();
listaCantantes.addNombre(listaCantantes.getNombreCantante());
System.out.print("\f");
System.out.println("La lista de cantantes famosos es la siguiente:");
listaCantantes.listarCantantes();
System.out.println("Desea introducir otro cantante presione \"S/N\"");
entradaTeclado = entradaEscaner.nextLine();
}
else if(entradaTeclado.substring(0, 1).equalsIgnoreCase("n")){
}
else{
System.out.println("La opción elegida es incorrecta!!!");
System.out.println("Desea introducir otro cantante presione \"S/N\"");
entradaTeclado = entradaEscaner.nextLine();
}
}
while(!entradaTeclado.substring(0, 1).equalsIgnoreCase("n"));
System.out.println("Fin del programa!!!");
} //Cierre del main
} //Cierre de la clase
Saludos y gracias por las correcciones y consejos, Ariel
-
Hola, tu código en general está bien.
Hay una cosa que no entiendo ¿Para qué tienes un atributo private String nombreCantante en la clase ListaCantantesFamosos? La clase representa una lista de nombres de cantantes famosos, no se ve lógico que tenga un atributo nombreCantante.
En la clase ListaCantantesFamosos usas esto:
int i=0;
for (String nombre: listanombres)
{
System.out.println ("Cantante " +(i+1)+": "+nombre);
i++;
}
En otros hilos del foro ya se ha comentado que si se usa un for de este tipo normalmente no se usan índices numéricos. En caso de usar índices numéricos es preferible usar un for tradicional.
Hay una cosa que podrías mejorar, te lo planteo como ejercicio. En la clase TestListaCantantesFamosos hay código en cierta medida repetido (para pedir que se introduzca un cantante famoso). La idea sería eliminar la repetición creando un método denominado pedirNombreCantanteFamoso que se encargue de pedir el nombre y devolver un String.
Saludos