Hola.
Aqui mando los codigos de este ejercicio. La verdad es que lo veo muy repetitivo en la clase del main y ademas, me ha costado mucho ver como implementar la elección con un while....se hace, pero no me gusta como ha quedado. Pero no se me ocurre otra forma de hacerlo. Me vendrian bien algunas sujerencias.
Un saludo.
import java.util.ArrayList;
public class ListaCantantesFamosos
{
private String nombreLista;//establecemos un atributo nobre de la lista
private ArrayList<String> listaCantantes;//declaramos un ArrayList que contiene objetos Strnig
public ListaCantantesFamosos(String nombre){
nombreLista=nombre;
listaCantantes=new ArrayList<String>();//creamos el objeto de tipo ArrayList
listaCantantes.add("Madonna");
listaCantantes.add("Queen");
listaCantantes.add("Bruce Springsteen");
}
public void addNombre(String nombre){
listaCantantes.add(nombre);
}
public String getNombre(int posicion){//metodo para obtener un nombre de la lista, segun su indicie
if(posicion>=0 && posicion<listaCantantes.size()){
return listaCantantes.get(posicion);
}else{
return "No existe nombre para la posición solicitada";
}
}
public void listarNombres(){
for (String nombre:listaCantantes){
System.out.println(nombre);
}
}
}
import java.util.Scanner;
public class testListaCantantes
{
public static void main(String[]args){
ListaCantantesFamosos lista=new ListaCantantesFamosos("Lista cantantes");
lista.addNombre("Bon Jovi");//añado un mobre mas a la lista...probando...
System.out.println("La lista esta formada por estos nombres:");
lista.listarNombres();
System.out.println("Introducir un nuevo nombre a la lista");
Scanner sc=new Scanner(System.in);
String newNombre=sc.nextLine();
lista.addNombre(newNombre);
System.out.println("La lista esta formada por estos nombres:");
lista.listarNombres();
boolean aux=true;
while(aux==true){
System.out.println("¿Quieres introducir más nombres? S/N");
String eleccion=sc.nextLine();
if(eleccion.equalsIgnoreCase("S")){//equalsIgnoreCase es el metodo para comparar sin tener en cuenta si es mayusculas o minusculas
System.out.println("Introducir un nuevo nombre a la lista");
String newN=sc.nextLine();
lista.addNombre(newN);
System.out.println("La lista esta formada por estos nombres:");
lista.listarNombres();
aux=true;
}else{
aux=false;//siempre que la respuesta no sea S, se saldra del programa.
}
}
}
}