Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: micaelasol en 16 de Febrero 2022, 16:08
		
			
			- 
				Aquí va una propuesta de solución para el ejercicio CU00666B del curso de programación Java para principiantes de aprenderaprogramar:
 
 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 y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir tantos cantantes como se desee, para ello usa un bucle while que dé opción a elegir al usuario). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com. 
 import java.util.ArrayList;
 
 public class ListaCantantesFamosos1
 {
 private ArrayList <String> listaFamosos;
 private String nombre;
 
 public ListaCantantesFamosos1 () {
 listaFamosos = new ArrayList <String>();
 listaFamosos.add("Ariana Grande");
 listaFamosos.add ("Dua Lipa");
 listaFamosos.add("Ed Sheeran");
 }
 
 public void addNombre(String nombre){
 listaFamosos.add(nombre);
 }
 
 public ArrayList <String> getListaFamosos(){
 return listaFamosos;
 }
 
 public int getTamaño(){
 return listaFamosos.size();
 }
 
 public void mostrarPorPantallaLista(){
 int i= 0;
 for (String nombre : listaFamosos){
 System.out.println ("\n Cantante número " + (i+1) + ": " + getListaFamosos().get(i));
 i++;
 }
 }
 
 }
 import java.util.Scanner;
 
 public class TestListaCantantesFamosos1
 {
 public static void main (String [] args){
 Scanner entradaEscaner = new Scanner (System.in);
 //NombreDeLaClase nombreDelObjeto = new NombreDeLaClase();
 ListaCantantesFamosos1 listaCantantes = new ListaCantantesFamosos1();
 
 System.out.println ("Así va la lista hasta ahora: ");
 listaCantantes.mostrarPorPantallaLista();
 
 System.out.println ("");
 
 System.out.println("Ahora ingrese un nuevo cantante: ");
 String entrada1 = entradaEscaner.nextLine();
 listaCantantes.addNombre(entrada1);
 //\n
 System.out.println ("Aqui va la lista actualizada: ");
 listaCantantes.mostrarPorPantallaLista();
 
 System.out.println("");
 
 while (!"No".equals(entrada1)){
 System.out.println("¿Quiere agregar un nuevo cantante?");
 entrada1 = entradaEscaner.nextLine();
 
 if (entrada1.equals("Si")){
 System.out.println ("Nombre: ");
 entrada1 = entradaEscaner.nextLine();
 listaCantantes.addNombre(entrada1);
 listaCantantes.mostrarPorPantallaLista();
 }else {entrada1 = "No";}
 }
 System.out.println ("Ha finalizado el programa");
 
 }
 }
 Muchas gracias y recibo consejos!
- 
				Hola, respecto a este ejercicio indicar que está bien resuelto y cumple con los requerimientos planteados. Como observaciones:
 
 -->  En el for extendido has introducido un índice. 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, al menos esto es lo más habitual. Sin embargo, no hay ninguna regla que prohíba hacerlo como lo has hecho.
 
 --> Para continuar añadiendo cantantes únicamente nos admite "Si" pero no admite "SI" ni "Sí" ni "S" etc. Esto podría haberse mejorado un poco, pero esto tampoco era algo importante en este ejercicio.
 
 --> En los casos en que debe ejecutarse al menos una vez un bucle, puede ser interesante usar un do while en lugar de un while. Puede verse un ejemplo de esto en https://aprenderaprogramar.com/foros/index.php?topic=2888.0
 
 Saludos.